目标...
- 从全局对象中删除变量、对象等。
- 消除碰撞的可能性。
首先,我实现了 Yahoo 命名空间代码(例如,注意我使用 ROOT 作为命名空间的根)...
if (typeof ROOT == "undefined" || !ROOT) {
var ROOT = {};
}
ROOT.namespace = function () {
var a = arguments,
o = null,
i, j, d;
for (i = 0; i < a.length; i = i + 1) {
d = ("" + a[i]).split(".");
o = ROOT;
for (j = (d[0] == "ROOT") ? 1 : 0; j < d.length; j = j + 1) {
o[d[j]] = o[d[j]] || {};
o = o[d[j]];
}
}
return o;
}
现在我声明我的第一个命名空间......
ROOT.namespace("UI");
ROOT.UI = {
utc: 12345,
getUtc: function() {
return this.utc;
}
}
我在这里要做的是保存我的 UI 所需的变量(在这种情况下是 UTC 的当前时间),以便它们不在全局对象上。我还想提供一些特定的功能。这应该在每个页面上都可用,无需任何实例化......
现在我想在我的命名空间结构中存储一个对象。但是,需要多次创建此对象。这里的目标是将其保留在我的结构中,但允许根据需要多次创建它。如下:
ROOT.namespace("AirportFinder");
ROOT.AirportFinder = function(){
this.var1 = 99999;
this.Display = function() {
alert(this.var1);
}
}
这是实例化对象的示例代码......
var test1 = new ROOT.AirportFinder();
test1.Display();
这是一个好的模式吗?