2012-09-20 25 views
1

我正在构建一些HTML5游戏,并且我不确定关于javascript中的一件事情。Javascript性能:变量vs大对象的属性

当处理一个大对象(具有很多属性和方法)时,它在某种程度上是不同的,如果我将属性值存储在一个变量中?

假设我必须每秒多次检查application.data.setings.foo.bar的某个值。我应该将它存储在变量fooBar?如果我理解正确,那么这个变量就只是一个参考,所以它应该没有关系。

so:应该将大对象属性的值存储在变量中吗?

+1

经典的“尝试并测量结果”可能适用于此。但是,只要你不是每次都搜索它,我想相信它会表现良好。 – scunliffe

回答

-1

对于数字,你可能会看到的性能提升,如果你把它放在一个变量

+2

你会介意分享这是为什么吗? – mreq

1

我相信你问的是:

如果你有一个变量叫:

application.data.settings.foo.bar = { some: 'value' }

它是更好的性能,通过使用application.data.settings.foo.bar访问它 - 或者改为:var bar = application.data.settings.foo.bar,然后参考bar

我的猜测是,对变量的赋值可能稍微高一点 - 仅仅是因为解释器访问相关项目的步骤较少。如果使用application.data.settings.foo.bar - 解释必须利用参考application对象,然后引用它的data属性,则引用其setting属性,则引用其foo属性,则引用其bar财产。这是5个步骤。

如果您将其引用到局部变量中以进行访问 - 您仍然碰到相同的对象,但是您直接在每个引用上击中它。但是,在一天结束时,这不太可能是一个非常显着的性能增强,除非您正在进行大量的快速访问循环或类似的操作。