JavaScript中使用new操作符会有性能损耗吗?

3
通常来说,方法B会带来性能成本:
方法A
 var foo = { 
      propertyA:
      ...
 };

 var SomethingSimilarToFoo = { 
      propertyA:
      …
 };

方法B

Var foo = function(){
       this.propertyA = ..
       …
}

foo1 = new foo(config);
SomethingSimilarToFoo = new foo(config);

8
担心这些细节通常是毫无意义的。 - Pointy
这只是我的猜测,我认为方法A在创建哈希时,而方法B创建对象。我相信对象的成本比哈希高。 - Micka
在使用“方法A”时,是否有相对于foo可用的“this”上下文? - Micka
1
更具体地说,使用原型声明的方法将被共享。但是属性不会被共享。 - Micka
无论如何,如果您想创建一个带有方法的对象(类似于POO中的对象),则使用“方法B”。但是,如果您只需要一个容器,例如字典/哈希表,则“方法A”就足够了。 - Micka
显示剩余3条评论
1个回答

2
请见http://jsperf.com/methods-vs-instances。一方面,在Firefox浏览器中,直接对象比实例化对象更快。可能是因为函数调用成本较高。另一方面,在某些版本的Chrome浏览器中,实例化对象更快。无论如何,不使用原型的实例化对象有点无用。但是,使用原型,实例化对象可以继承属性(这意味着占用更少的内存),并且您将获得更大的灵活性。请注意保留HTML标记。

1
微基准测试很少能够测试到你想要测试的东西,特别是在测试语言特性时。 - monastic-panic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接