在JavaScript代码中,我们目前使用Method1创建了很多对象(参见代码)。使用Method2会更好吗? (使用.prototype)有什么好处? (对执行速度和内存使用情况特别感兴趣。)
var exampleObjectFunction1 = function(){ alert(this.exampleProperty1);};
var exampleObjectFunction2 = function(){ this.myFunction1(); };
var exeampleProperties = {
exampleProperty1: 'example',
exampleProperty2: 'example',
};
//Method1: Current instanciation method
function exampleObject1(properties) {
this.exampleProperty1 = properties.property1;
this.examplePropertyX = properties.propertyX;
this.exampleObjectFunction1 = exampleObjectFunction1;
this.exampleObjectFunction2 = exampleObjectFunction2;
};
var exampleObject1 = new exampleObject(properties);
//Method2: Using prototype (better?)
function exampleObject2(properties) {
this.exampleProperty1 = properties.property1;
this.examplePropertyX = properties.propertyX;
};
exampleObject2.prototype.exampleObjectFunction1 = exampleObjectFunction1;
exampleObject2.prototype.exampleObjectFunction2 = exampleObjectFunction2;
var exampleObject2 = new exampleObject2(properties);
编辑:我看到很多“构造函数与原型”的比较。但是那里的“构造函数”代码通常会重新定义构造函数中的函数,而我在可重用变量中预定义它们。我认为这是一个不同的方案,但我不太确定它是否更接近“原型”或“构造函数”。
答案 0 :(得分:2)
假设您创建了1000个exampleObject1对象和1000个exampleObject2对象。
如果要覆盖所有exampleObject1对象的exampleFunction1,则必须遍历所有对象并进行更改。
如果要对所有exampleObject2对象执行此操作,只需在一个位置更改它的原型。
因此,从代码扩展性的角度来看,使用原型更好的选择。