在用于优化JavaScript代码的Google developers recommendation中,他们提到声明/初始化对象的新变量的最佳方法是使用原型。例如,而不是:
foo.Bar = function() {
this.prop1_ = 4;
this.prop2_ = true;
this.prop3_ = [];
this.prop4_ = 'blah';
};
使用:
foo.Bar = function() {
this.prop3_ = [];
};
foo.Bar.prototype.prop1_ = 4;
foo.Bar.prototype.prop2_ = true;
foo.Bar.prototype.prop4_ = 'blah';
但是,在我的情况下,我在变量之间存在依赖关系,例如:
var appv2 = function(){
this.start(this.person, this.car);
};
appv2.prototype.toWhom = 'Mohamed';
appv2.prototype.person = new person(this.toWhom);
appv2.prototype.car = new car();
appv2.prototype.start = function(person, car){
console.log('start for appv2 is called');
person.sayHello('me app v2');
car.brand();
};
new appv2();
在主构造函数体外使用this.toWhom或对象的方法函数将产生undefined。要解决这个问题,我可以使用appv2.prototype.toWhom而不是this.toWhom,或者我可以在主构造函数体内声明我的因变量。
但我想知道在性能方面最好的方法是什么?
谢谢
答案 0 :(得分:1)
要在创建toWhom
时引用person
,您可以将值存储在单独的变量中:
var toWhom = appv2.prototype.toWhom = 'Mohamed';
appv2.prototype.person = new person(toWhom);
或者,如您所怀疑的那样,从prototype
引用它:
appv2.prototype.person = new person(appv2.prototype.toWhom);
this.toWhom
undefined
的原因是因为this
没有引用appv2
的实例。