將局部變量用作對象屬性的引用而不是屬性本身是不好的做法?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