在为类定义方法时,最好是自己使用成员还是将它们分配给新变量使其更快?想象一下,例如在JavaScript中使用以下方法:
square: function() {
var x = this.x;
x *= x;
return x;
}
或
square: function() {
this.x *= this.x;
return this.x;
}
答案 0 :(得分:0)
一般来说,速度的差异几乎总是可以忽略不计,这意味着这是一个premature optimization,应该避免使用任何更易维护的方法。
但是,在您的特定情况下,两种square
方法之间的功能存在重大差异,如下所示。
var a = {
x: 2,
square: function() {
var x = this.x;
x *= x;
return x;
}
}
console.log('Result of a.square():', a.square()); //Output is 4
console.log('After square, a.x is:', a.x); //Output is 2
var b = {
x: 2,
square: function() {
this.x *= this.x;
return this.x;
}
}
console.log('Result of b.square():', b.square()); //Output is 4
//The difference is here: b.x will be 4 while a.x is still 2
console.log('After square, b.x is:', b.x); //Output is 4
第一个square
方法不会更新this.x
,但第二个方法会更新。使用符合您意图的版本。在消除过早优化之后,每种方法的简化版本如下。可维护性的提高是显而易见的。
第一个版本(不更新this.x
):
square: function() {
return this.x * this.x;
}
第二个版本(更新this.x
):
square: function() {
return this.x *= this.x;
}