Javascript 获取具有属性的对象值的运行时间

Javascript 获取具有属性的对象值的运行时间,javascript,performance,javascript-objects,Javascript,Performance,Javascript Objects,当我们从带有索引的数组中获取一个值时,我们可以在常量时间内完成 例如: 假设我们从具有属性的对象中获取一个值 例如: 运行时间是多少?它是线性的还是常数的 提前感谢您…我们也可以使用 val= obj["prop3"]; 可能它的索引类似于php中的关联数组。所以运行时间是恒定的 编辑:我还发现这个链接将对象作为关联数组进行讨论,因此它们是散列的。 也许我们可以说字符串(对象属性的名称)有一个长度,因此散列将是O(n)线性的,但在散列之后,当他有索引时,它将是O(1) 我们必须对此进行更多思

当我们从带有索引的数组中获取一个值时,我们可以在
常量
时间内完成

例如:


假设我们从具有属性的对象中获取一个值

例如:

运行时间是多少?它是线性的还是常数的

提前感谢您…

我们也可以使用

val= obj["prop3"];
可能它的索引类似于php中的关联数组。所以运行时间是恒定的

编辑:我还发现这个链接将对象作为关联数组进行讨论,因此它们是散列的。 也许我们可以说字符串(对象属性的名称)有一个长度,因此散列将是O(n)线性的,但在散列之后,当他有索引时,它将是O(1)


我们必须对此进行更多思考。

这取决于所使用的Javascript引擎。大多数JS引擎将属性特性实现为字典,以支持按需创建属性。因此,在大多数情况下,它是线性的。但是,还有更多优化的解决方案,您可以检查以下内容:

var obj = {prop1 : 3, prop2 : 4, prop3 : 56, ......};
var val = obj.prop3; //running time?
val= obj["prop3"];