使用局部变量作为对象属性的引用而不是属性本身是不是一种坏习惯吗?
function Apple(){
this.type = 'green appale';
}
Apple.prototype.slice = function(){
//Does this create a noticeable overhead?
var type = this.type;
//slicing action
}
答案 0 :(得分:0)
答案是肯定和否定。从表演的角度来看,不要担心。与其他性能问题相比,这是一个蛋糕步行。除了经验法则之外,还要编写代码以便于阅读,并且只有在需要通过事后分析后才进行优化。不要预先优化。
至于注意事项......如果您将保存的值作为不可变值(string,int,boolean),那么您的100%安全可以做到这一点。如果它是一个对象或数组,那么您需要知道它是一个引用和更改也会影响原始变量。最后,如果它是一个函数,那么你必须要知道你将在上面的代码示例中忽略它的 context 。
function foo() {}
var bar = foo; // Context is irrelevant.
function foo() {
this.baz = 'foobar';
}
var bar = foo; // You must provide a context or `this` becomes `window`.