1

在使用单个全局命名空间构建各种工具时,我们如何从工具的方法中访问命名空间对象的属性或方法,而不是在外部进行访问?

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可以使用的工具中。理想情况下,这些工具和属性应该可以从工具中读取/使用,但它们是不可变的。

4

1 回答 1

0

你可以在这里阅读,它解释了更多关于 JavaScript 中私有成员的信息。

基本上,你问的是不可能的。

要么所有函数都必须在闭包中定义,要么Turkey必须是公共的。

于 2013-03-16T04:08:25.240 回答