我有一个对象:
var object = {
string1 : 'hello',
string2 : 'world'
}
如果我想调用string2
的{{1}}属性,则多次调用它会更慢:
object
或者为它创建一个包含参数值的引用会更快,如:
...object.string2...
...object.string2...
我认为第二个可能更快的原因,因为我现在认为第一个总是扫描整个对象以获取值。
答案 0 :(得分:1)
你是对的 - 第二个更快,因为JavaScript不需要每次都执行string2的查找。这种变化更加深刻:
(do stuff with foo.bar.baz.qux)
与
var property = foo.bar.baz.qux;
(do stuff with property)
在该示例中,必须扫描foo为bar。然后必须扫描bar为baz。等等。
在你的例子中,除非你使用string2进行很多工作,否则增益将是最小的,但你说它更快是正确的。
答案 1 :(得分:1)
在你的情况下这没关系。但对于具有大型原型块的大对象 - 你是对的。 但是你可能会在速度上获胜但功能却松散,因为var a = obje.property按值处理 - 而不是通过引用,如果obj.property将动态更改,则变量a将具有旧值obj.property