javascript新的自调用函数

标签 javascript new-operator

我有一个关于 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/

相关文章:

javascript - 单击图像时如何隐藏导航栏

javascript - 在 Rails 3 应用程序中使用 jQuery 刷新 div 元素

javascript - Netbeans 不支持 JavaScript

c++ - 在作为函数参数传递的指针上使用 delete

c++ - 在 C++ 中为空 ptr-to-ptr 赋值

javascript - 使用 angularjs 设置下拉列表的默认值?

javascript - ng-route 不工作

PHP:对象实例上的 new 运算符创建一个对象实例。为什么?

javascript - JavaScript 中的 new 运算符如何工作?

c++ - 使用和不使用新指针的区别