【问题描述】:

是否有任何考虑来确定创建具有私有成员的对象的更好做法?

var object = new function () { 
   var private = "private variable";
   return {
       method : function () { 
           ..dosomething with private;
       }
   }
}

VS

var object = function () {
 ...
}();

基本上在这里使用 NEW 和在我们定义后立即调用函数有什么区别?

【问题讨论】:

标签: javascript function private members


【解答1】:

如果您将函数用作事件处理程序,则可能会导致内存泄漏。看看一些articles

【问题讨论】:

    【解答2】:

    new 运算符使函数像Constructor Function 一样被调用。

    我以前见过这种模式,但我没有看到使用它的任何好处。

    new操作符的目的是创建一个对象(构造函数内部的this值),设置正确的[[Prototype]] 内部属性,用于构建原型链并实现继承(详见[[Construct]]操作)。

    我建议您使用 内联调用 模式。

    【问题讨论】:

    • 虽然我同意 CMS,因为您使用的是揭示模块模式并依赖于词法范围 - 我要澄清的是,new 在创建基于类的对象时是合适的原型模式 - 例如 BackboneJS 模型或视图。
    【解答3】:

    link 提供的统计数据也证实内联调用模式更好。

    请注意,度量单位是每秒操作数,越高越好

    【问题讨论】: