我有一个关于 javascript 中的自调用函数的问题。
我正在做的是类似于下面的事情
myNamespace = {}; //namespace for holding any objects/functions
//helpModule as an example
myNamespace.HelpModule = new (function(){
this.abc = '123';
//lots of other code in here...
})();
现在我可以像这样访问 myNamespace.HelpModule 的属性:
alert(myNamespace.HelpModule.abc);
但是对于初学者来说,jsLint 不喜欢说“奇怪的结构。删除‘new’。”, 还有这个page指出你不应该使用函数构造函数,尽管在这种情况下我不确定它是否使用函数构造函数因为它是一个自调用函数?
无论如何,它似乎工作正常,我使用它的原因是函数具有“this”范围而不是全局对象(窗口)。我可以将它定义为对象字面量或做类似于
的事情myNamespace.HelpModule = (function(){
var obj = {};
obj.abc = '123';
return obj;
}();
但这些对我来说都不“优雅”。
我想知道这是否是一种不良的形式/做法?
最佳答案
这很奇怪,因为定义构造函数的目的是为了能够重用它来创建许多对象。
为了您的目的,您可以使用这个结构-
myNamespace.HelpModule = (function(){
//private stuff here
var a = 100;
return {
//public stuff here
b : 200,
something: function() {
return a + this.b;
}
};
})();
关于javascript新的自调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3128972/