使用new function(){}构造对象与使用(function(){})调用函数() - 性能?

时间:2011-06-22 12:53:54

标签: javascript performance function initialization

`new function()` with lower case "f" in JavaScript

我的直觉说使用new关键字会比较慢。使用任何一种方法都有明显的好处吗?

3 个答案:

答案 0 :(得分:1)

这可能会使对象的初始创建变慢,很可能是不可估量的。

据我所知,它不会对该对象的任何后续执行的方法的性能产生任何影响。

答案 1 :(得分:1)

我的猜测是函数构造函数形式(new function() { })比在闭包中调用对象文字更快((function(){ return {}; })()),因为后者似乎做的工作比前者。

然而,看起来我错了,至少对于一些现代的JavaScript引擎来说。 This jsPerf comparison显示Chrome和Firefox中的文字/结尾形式要快得多。

最终,我认为代码的正确性和程序员意图的清晰度比这样一个简单的优化更重要(无论如何,它可能在现实世界的JavaScript引擎之间变化很大)。

答案 2 :(得分:0)

我猜测使用new的唯一好处是,如果您喜欢

的语法

this.myfunct = function...

如果您在没有new的情况下这样做,那么您将污染全局命名空间

但除此之外确实没有区别。

如果速度困扰你,那就是jsperf将它放在百万分之一秒的速度下,如果你做了一百万个IIFE,那么你就是在做一些事情