最近我在一个关于响应时间的项目上一直很好,并且怀疑在javascript中访问对象属性的最快方法是什么,目前我只知道2:
定义了一个简单的对象:
let obj = { nombre: 'juan pirulo' };
有两种方法可以访问它的属性,读取或修改:
obj.nombre
任何一个
obj['nombre']
问题是这两种形式中的哪一种在大量调用中最快,或者差异可以忽略不计。
最近我在一个关于响应时间的项目上一直很好,并且怀疑在javascript中访问对象属性的最快方法是什么,目前我只知道2:
定义了一个简单的对象:
let obj = { nombre: 'juan pirulo' };
有两种方法可以访问它的属性,读取或修改:
obj.nombre
任何一个
obj['nombre']
问题是这两种形式中的哪一种在大量调用中最快,或者差异可以忽略不计。
这两种语法具有完全相同的性能,因为在执行级别它们是相同的:它们访问相应对象的成员。
在 JavaScript 中没有静态成员,对象的所有成员都是动态的,因此在这两种情况下,都是访问对象属性集中的相应成员的问题。
真正的区别在于括号语法允许使用 any
string
作为键,而.
唯一的表示法允许使用有效的标识符。例子:
作为建议,我会告诉您始终
.
尽可能长时间地使用该符号,并在运行时知道要访问的成员名称时保留括号符号(它是动态的)例子
做测试:
您会注意到时差变化并且非常微妙。有时一个比另一个快,反之亦然。
如果您为每个迭代构建 10 次迭代块;你会注意到结果是一样的:
您会注意到,对于每种情况,前 2 次尝试都慢得多。然后,其他值保持相对恒定(它们已经在缓存中)。如果你认为这两种情况的值都是常数,结果将是相同的。有时一个比另一个快,有时不是。
我的建议,不要关注这种情况下的性能。这两种方式都足够快,可以以任何明显的方式影响性能。