0
我們對使用對象時的最佳做法有一些爭論。我們中的一些使用下面的方法來獲取對象的屬性值:對象優化中的參考
object[a][b][...][z]
其他的聲稱,如果您使用下面的代碼,一旦
var ref=object[a][b][...][z]
,然後使用「裁判」,當你需要的變量隨時具體的對象值更快。
有沒有人知道在第二種情況下是否有優化?例如,如果你需要循環槽大對象:
//with reference
for(var a in object){
for(var b in object[a]){
...
var ref=object[a][b][...][y];
for(var z in object[a][b][...][z]){
if(ref){
....
}
}
...
}
}
//without reference
for(var a in object){
for(var b in object[a]){
...
for(var z in object[a][b][...][z]){
if(object[a][b][...][y]){
....
}
}
...
}
}
你可以嘗試一下在[jsperf.com(http://jsperf.com)!有關您的具體情況,請參閱http://jsperf.com/ref-or-no-ref。 'ref'版本比'no-ref'版本(Win7,Chrome)快10%。這是有道理的,因爲'ref'版本爲您節省了一些對象查找('ref'直接指向末尾),但是我不知道內聯緩存究竟做了什麼以及它優化了多少對象查找。我希望看到有關多少對象查找實際成本的詳細說明......! – 2012-08-17 09:20:14
這聽起來更像是一個評論,而不是答案 – 2012-08-17 09:21:03
足夠公平,我會嘗試一下,但我在JavaScript規範中跳躍尋求一些解釋.. – gotqn 2012-08-17 09:23:40