Javascript new object (function ) vs inline invoca

2019-02-07 00:05发布

问题:

Is there any considerations to determine which is better practice for creating an object with private members?

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

VS

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

Basically what is the difference between using NEW here, and just invoking the function immediately after we define it?

回答1:

The new operator causes the function to be invoked like a Constructor Function.

I've seen that pattern before, but I don't see any benefits of using it.

The purpose of the new operator is to create an object (the this value inside the constructor), setting the right [[Prototype]] internal property, to build the prototype chain and implement inheritance (you can see the details in the [[Construct]] operation).

I would recommend you to stay with the inline invocation pattern.



回答2:

If you're using functions as event handlers you can get memory leaks. Have a look at some of the articles



回答3:

This link provides statistics which also confirms that inline invocation pattern is better.

Please note that the measurement is in operations per second which the higher the better