我有一个关于在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;
}();
但这些对我来说都不像是“优雅”.
我想知道这是不好的形式/做法?
解决方法:
这很奇怪,因为定义构造函数的目的是能够重用它来创建许多对象.
为了您的目的,您可以使用此构造 –
myNamespace.HelpModule = (function(){
//private stuff here
var a = 100;
return {
//public stuff here
b : 200,
something: function() {
return a + this.b;
}
};
})();
标签:javascript,new-operator 来源: https://codeday.me/bug/20190621/1258078.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。