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

发布于 2024-08-27 14:08:29 字数 344 浏览 9 评论 0 原文

是否有任何考虑因素来确定使用私有成员创建对象的更好实践?

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

VS

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

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

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

丢了幸福的猪 2024-09-03 14:08:29

new 运算符导致函数像 构造函数一样被调用函数

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

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

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

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.

爱她像谁 2024-09-03 14:08:29

如果您使用函数作为事件处理程序,则可能会出现内存泄漏。查看一些文章

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

○闲身 2024-09-03 14:08:29

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文