将局部变量用作对象属性的引用而不是属性本身是不好的做法?JavaScript中对象属性开销的局部变量引用
function Apple(){
this.type = 'green appale';
}
Apple.prototype.slice = function(){
//Does this create a noticeable overhead?
var type = this.type;
//slicing action
}
将局部变量用作对象属性的引用而不是属性本身是不好的做法?JavaScript中对象属性开销的局部变量引用
function Apple(){
this.type = 'green appale';
}
Apple.prototype.slice = function(){
//Does this create a noticeable overhead?
var type = this.type;
//slicing action
}
答案是肯定和否。从演出的角度来看,不要担心。与其他性能问题相比,这是一个蛋糕走路。除了经验法则之外,还要编写可读性代码,并且只在需要通过事后分析时进行优化。不要预先优化。
至于警告...如果你的值为节省作为一个不可变的值(字符串,整型,布尔),那么你是100%安全的做到这一点。如果它是一个对象或数组,那么您需要知道它是一个参考,并且变化也会影响变量的原始变量。最后,如果它是一个函数,那么你必须知道,你会在上面的代码示例中丢失它的上下文。
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`.
它可能是一个非常小的改进,但是在这个时代,对于世界上越来越复杂的JavaScript运行时间的猜测毫无意义。 – Pointy
它没有任何必然的错误。请注意'type'是'this.type'的一个*拷贝,而不是对它的引用。每个可以修改而不会影响其他。 –
这只是一个副本,因为字符串在JS中是不可变的。如果'this.type'是一个对象或数组,那么它就是一个引用。 – Sukima