Javascript 目标优化中的参考

Javascript 目标优化中的参考,javascript,optimization,object,reference,Javascript,Optimization,Object,Reference,对于使用对象时的最佳实践,我们有一些争论。我们中的一些人使用以下方法获取对象属性值: object[a][b][...][z] 其他人则声称,如果您只使用以下代码一次 var ref=object[a][b][...][z] 然后在需要更快的特定对象值时随时使用“ref”变量 有人知道第二种情况下是否存在优化吗?例如,如果需要在大型对象中循环: //with reference for(var a in object){ for(var b in object[a]){

对于使用对象时的最佳实践,我们有一些争论。我们中的一些人使用以下方法获取对象属性值:

object[a][b][...][z] 
其他人则声称,如果您只使用以下代码一次

var ref=object[a][b][...][z]
然后在需要更快的特定对象值时随时使用“ref”变量

有人知道第二种情况下是否存在优化吗?例如,如果需要在大型对象中循环:

//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]){
                    ....
                }
            }
        ...
    }
}

“ref”版本可以节省对象查找,因此应该更快


jsperf测试证实了这一点:

自己试试吧!请参阅您的具体案例。“ref”版本比“no ref”版本(Win7,Chrome)快10%。这是有道理的,因为'ref'版本为您节省了一些对象查找(“ref”直接指向末尾),但我不知道内联缓存到底做了什么,以及它在多大程度上优化了对象查找。我很想看到一个详细的说明,在这些天里,对象查找实际花费了多少钱。。。!这听起来更像是一个评论,而不是一个回答。很公平,我会尝试一下,但我正在寻找JavaScript规范中的一些解释。我还在运行测试:)请参阅更新answer@Joro:我也想知道内部的答案。它可能涉及到内联缓存和更多使对象查找更快的事情。但我对它的了解还不足以推断出一个理论上的答案。因此,这是一个实用的变体。