1

我了解推荐的方式是版本 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());
   }
4

3 回答 3

1

版本 1 将仅将函数提供给您的对象,而版本 2 将向保存原型的函数中的所有对象提供函数。

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

于 2012-06-04T19:33:19.340 回答
0

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

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

于 2012-06-04T19:58:17.277 回答
0

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

在此处输入图像描述

谢谢,马丁。

于 2012-06-04T20:05:06.617 回答