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