我有一个关于在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并不喜欢那种说“怪异的建筑。删除'新'。”, 这个page声明你不应该使用函数构造函数,虽然在这种情况下我不确定它是否使用函数构造函数,因为它是一个自调用函数?
无论如何,它似乎工作正常,我使用它的原因是将“this”范围赋予函数而不是全局对象(窗口)。我可以将它定义为对象文字或类似于
myNamespace.HelpModule = (function(){
var obj = {};
obj.abc = '123';
return obj;
}();
但这些对我来说都不像是“优雅”。
我想知道这是不好的形式/做法?
答案 0 :(得分:5)
这很奇怪,因为定义构造函数的目的是能够重用它来创建许多对象。
出于您的目的,您可以使用此构造 -
myNamespace.HelpModule = (function(){
//private stuff here
var a = 100;
return {
//public stuff here
b : 200,
something: function() {
return a + this.b;
}
};
})();