繁体   English   中英

javascript新的自我调用功能

[英]javascript new self invoking function

我有一个关于在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并不喜欢这样说“奇怪的构造。删除'新'。”这个页面说明你不应该使用函数构造函数,尽管在这种情况下我不确定它是否使用函数构造函数它是一个自我调用的功能?

无论如何,它似乎工作正常,我使用它的原因是将“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;
        }
    };
})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM