我理解推荐的方式是版本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());
}
答案 0 :(得分:1)
版本1将仅为您的对象提供该功能,而版本2将为持有该原型的函数的所有对象提供该功能。
实际上,我非常想知道版本1中的任何new C();
实例是否可以访问C.f方法......
答案 1 :(得分:0)
任何性能差异都没有实际意义,因为第一个版本不起作用。
将函数作为属性添加到构造函数不会使其成为创建对象中的方法。
答案 2 :(得分:0)