当使用单个全局名称空间构建各种工具时,我们如何从工具方法访问名称空间对象的属性或方法,而不是在外面四处走动呢?
让OT
,“我们的工具”成为名称空间。
我们可以做到:
var OT = function(){ // Closure
var Turkey = 'Im a Turkey!';
return this;
}();
或
var OT = { // Object Literal
Turkey:'Im a Turkey!'
};
在任何一种情况下,我们都会将工具添加到OT
对象中,例如:
OT.GridInterface = function (){
// A Grid tool
this.DoSomething();
}
OT.GridInterface.prototype = new OT.BaseInterface();
OT.GridInterface.prototype.DoSomething = function(){
console.log(Turkey); // undefined
console.log(OT.Turkey); // undefined with Closure, works with Obj Literal*
console.log(this.Turkey); // undefined
}
// * This goes around the outside to get the property publicly rather than up through the inside.
似乎每个工具在技术上都是OT
的方法,并且该方法的方法应该能够访问命名空间的Turkey
属性,因为内部函数应该能够访问外部函数的属性?
我的目标是能够向OT
添加共享配置变量以及一些实用工具方法,OT
方法的所有工具都可以使用。理想情况下,这些工具和属性应该可以从工具中读取/使用,但是它们是不可变的。