Javascript:多次调用对象属性

发布于 2024-11-30 09:42:48 字数 411 浏览 0 评论 0原文

我有一个对象:

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

如果我想调用 objectstring2 属性,多次调用它是否会更慢,例如:

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

或者创建引用会更快对于它来说,保存参数值的原因是:

var string2 = object.string2;
...string2...
...string2...

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

I have an object:

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

And If I want to call the string2 property of the object is it slower to call it multiple times like:

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

or it would be faster to create a reference for it what holds the value of the parameter like:

var string2 = object.string2;
...string2...
...string2...

The reason why I think that the second one could be faster, because I think right now that the first one always scans the whole object to grab the value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笙痞 2024-12-07 09:42:48

你是对的——第二个更快,因为 JavaScript 不需要每次都执行 string2 的查找。这种变化在以下方面更为深刻:

(do stuff with foo.bar.baz.qux)

var property = foo.bar.baz.qux;
(do stuff with property)

在该示例中,必须扫描 foo 来查找 bar。然后必须扫描 bar 来查找 baz。等等。

在您的示例中,除非您对 string2 进行大量工作,否则增益将很小,但您说它更快是正确的。

You are correct - the second one is faster, because JavaScript does not need to perform the lookup of string2 each time. The change is even more profound in something like this:

(do stuff with foo.bar.baz.qux)

versus

var property = foo.bar.baz.qux;
(do stuff with property)

In that example, foo must be scanned for bar. Then bar must be scanned for baz. Et cetera.

In your example the gain will be minimal unless you are doing a lot of work with string2, but you are correct in saying that it is faster.

堇年纸鸢 2024-12-07 09:42:48

在你的情况下这并不重要。但对于具有大原型块的大对象 - 你是对的。
但是你可能会在速度上获胜,但在功能上松散,因为 var a = obje.property 按值处理 - 而不是通过引用,如果 obj.property 将动态更改,则变量 a 将具有 obj.property 的旧值

In you case this does not matter . But for big object with big prototype chunks - you right.
But you may win in speed but loose in functionality because var a = obje.property coping by value - not by reference and if obj.property will be change dynamically that variable a will have old value of obj.property

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文