//*****************************************************************************************************************************************
//--------------------------------------------------------------注冊命名空間--方式01-----------------------------------------------------------
//*****************************************************************************************************************************************
Namespace = new Object();// 聲明一個全局對象Namespace,用來注冊命名空間
// 全局對象僅僅存在register函數(shù),參數(shù)為名稱空間全路徑,如"TRE.object"
Namespace.register = function(fullNS)
{
// 將命名空間切成N部分, 比如TRE、object等
var nsArray = fullNS.split('.');
var sEval = "";
var sNS = "";
for (var i = 0; i < nsArray.length; i++)
{
if (i != 0) {sNS += ".";}
sNS += nsArray[i];
// 依次創(chuàng)建構(gòu)造命名空間對象的語句(假如不存在的話)
// 比如先創(chuàng)建TRE,然后創(chuàng)建TRE.object,依次下去
sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
}
if (sEval != "")
{
eval(sEval);
}
}
// 注冊命名空間TRE.sql, TRE.util等
Namespace.register("TRE.sql");
Namespace.register("TRE.util");
Namespace.register("TRE.IO");
Namespace.register("TRE.IO.File");
Namespace.register("TRE.object");
// TRE.object命名空間里面聲明類Person
TRE.object.Person = function(name, age)
{
this.name = name;
this.age = age;
this.say = function(sayConment){
alert(this.name + "(" + this.age + "years old)is saying: " + sayConment);
};
}
// 演示如何使用類Person
var p = new TRE.object.Person("zlc", 23);
p.say('Hello');
//*****************************************************************************************************************************************
//--------------------------------------------------------------注冊命名空間--方式02-----------------------------------------------------------
//*****************************************************************************************************************************************
var TRE = window.TRE || {};
TRE.namespace = function(ns) {
if (!ns || !ns.length) {return null;}
var levels = ns.split(".");
var nsobj = TRE;
for (var i=(levels[0] == "TRE") ? 1 : 0; i<levels.length; ++i) {
nsobj[levels[i]] = nsobj[levels[i]] || {};
nsobj = nsobj[levels[i]];
}
return nsobj;
};
TRE.extend = function(subclass, superclass) {
var f = function() {};
f.prototype = superclass.prototype;
subclass.prototype = new f();
subclass.prototype.constructor = subclass;
subclass.superclass = superclass.prototype;
if (superclass.prototype.constructor == Object.prototype.constructor) {
superclass.prototype.constructor = superclass;
}
};
TRE.namespace("util");
TRE.namespace("sql");
TRE.namespace("IO");
//*****************************************************************************************************************************************
//--------------------------------------------------------------XXXXXXXXXXXXXXXX-----------------------------------------------------------
//*****************************************************************************************************************************************