在使用单个全局命名空间构建各种工具时,我们如何从工具的方法中访问命名空间对象的属性或方法,而不是在外部进行访问?
让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
可以使用的工具中。理想情况下,这些工具和属性应该可以从工具中读取/使用,但它们是不可变的。