Javascript:多次调用对象属性

时间:2011-08-18 15:25:00

标签: javascript performance oop object reference

我有一个对象:

var object = {
    string1 : 'hello',
    string2 : 'world'
}

如果我想调用string2的{​​{1}}属性,则多次调用它会更慢:

object

或者为它创建一个包含参数值的引用会更快,如:

...object.string2...
...object.string2...

我认为第二个可能更快的原因,因为我现在认为第一个总是扫描整个对象以获取值。

2 个答案:

答案 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