Javascript性能:变量与大对象';s属性
我正在开发大量HTML5游戏,但我对javascript中的一件事不太确定 当处理一个大对象(有很多属性和方法)时,如果我将属性值存储在一个变量中,会有什么不同吗 假设我必须每秒多次检查Javascript性能:变量与大对象';s属性,javascript,performance,variables,attributes,Javascript,Performance,Variables,Attributes,我正在开发大量HTML5游戏,但我对javascript中的一件事不太确定 当处理一个大对象(有很多属性和方法)时,如果我将属性值存储在一个变量中,会有什么不同吗 假设我必须每秒多次检查application.data.settings.foo.bar中的某些值。我应该将其存储在变量fooBar中吗?如果我理解正确,变量将只是一个引用,所以它不重要 因此:是否应将大型对象属性的值存储在变量中?对于数字,如果将其放置在变量中,您可能会看到性能的提高 我相信你的问题是: 如果您有一个名为: appl
application.data.settings.foo.bar
中的某些值。我应该将其存储在变量fooBar
中吗?如果我理解正确,变量将只是一个引用,所以它不重要
因此:是否应将大型对象属性的值存储在变量中?对于数字,如果将其放置在变量中,您可能会看到性能的提高
我相信你的问题是: 如果您有一个名为:
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个步骤
如果你引用它到一个局部变量中进行访问,你仍然在命中同一个对象,但是你在每个引用上都直接命中了它
然而,归根结底,这不太可能是一个非常显著的性能提升,除非您正在进行大量繁重、快速的访问循环或类似操作。经典的“尝试并测量结果”可能适用于此。然而,只要你不是每次都在寻找它,我相信它会表现得很好。