gpt4 book ai didi

javascript - 有没有什么可以保证在 JavaScript 中访问对象属性的时间恒定?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:40 25 4
gpt4 key购买 nike

这是关于我在亚马逊面试时与面试官的一场辩论。

让我创建一个对象:

var Obj = {};
Obj['SomeProperty'] = function ( ) { console.log("Accessed some property"); };
Obj[69] = true;

当我随后访问这 2 个属性时,JavaScript 保证是否有任何内容,如 Obj['SomeProperty']Obj[69] 各自的值 function ( ) { console.log("Accessed some property"); };69 是在 O(1) 时间内查找的?我知道访问运算符 [] 给经验丰富的程序员的印象是他正在处理 O(1) 查找结构,但是 JavaScript 引擎不可能实现 Object 以某种方式在 O(1) 中查找属性?

最佳答案

Is there anything in the JavaScript guaranteeing that the values are looked up in O(1) time?

没有。 JavaScript 不提供任何复杂性保证,except for ES6 collections .

I know the access operator [] gives a seasoned programmer the impression that he's dealing with an O(1) lookup structure

是的,这是一个合理的期望。引擎采用各种优化,从 HashMap 上的隐藏类到动态数组,以满足这些假设。

当然,永远不要忘记 JS 对象是复杂的野兽,访问一个简单的属性可能会触发一个 getter 陷阱,而这个陷阱反过来可以做任何事情。

Can't it be possible for a JavaScript engine to implement Object in a way such that properties are not looked up in O(1)?

是的,这是可能的。

关于javascript - 有没有什么可以保证在 JavaScript 中访问对象属性的时间恒定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com