Javascript新对象(函数)vs内联调用

时间:2010-04-05 22:33:07

标签: javascript function private members

是否有任何考虑因素可以确定哪种方法可以更好地创建具有私有成员的对象?

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

VS

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

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

3 个答案:

答案 0 :(得分:9)

new运算符会导致函数被调用为Constructor Function

之前我见过这种模式,但我认为使用它没什么好处。

new运算符的目的是创建一个对象(构造函数中的this值),设置正确的[[Prototype]]内部属性,以构建原型链并实现继承(您可以在[[Construct]]操作中查看详细信息。)

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

答案 1 :(得分:1)

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

中的一些内容

答案 2 :(得分:1)

link提供的统计信息也确认了内联调用模式更好。

请注意,测量值在operations per second,其中越高越好