哪个javascript对象创建更有效?

时间:2012-06-04 19:29:35

标签: javascript object prototype

我理解推荐的方式是版本2(下面),使用原型。但是,这两个版本之间有什么区别,因为版本1不仅在内存消耗方面有时超过版本2,而且通常在半到三分之一的时间内完成(根据我使用Chrome的测试)。

版本1:

   var C = function() { console.log("new C"); }

   C.f = function(foo) { console.log("function"); }

   var a = [];
   for (var i = 0; i < 100000; i++) {
       a.push(new C());
   }

版本2:

   var C = function() { console.log("new C"); }

   C.prototype.f = function(foo) { console.log("function"); }

   var a = [];
   for (var i = 0; i < 100000; i++) {
       a.push(new C());
   }

3 个答案:

答案 0 :(得分:1)

版本1将仅为您的对象提供该功能,而版本2将为持有该原型的函数的所有对象提供该功能。

实际上,我非常想知道版本1中的任何new C();实例是否可以访问C.f方法......

答案 1 :(得分:0)

任何性能差异都没有实际意义,因为第一个版本不起作用。

将函数作为属性添加到构造函数不会使其成为创建对象中的方法。

答案 2 :(得分:0)

要在浏览器之外测试JavaScript语言,您可以使用我的Script Scraper工具。

enter image description here

感谢, 马丁。