当前位置:  开发笔记 > 编程语言 > 正文

是否有任何保证在JavaScript中访问对象属性的恒定时间?

如何解决《是否有任何保证在JavaScript中访问对象属性的恒定时间?》经验,为你挑选了1个好方法。

这是关于我在亚马逊采访时与面试官进行的辩论.

我来创建一个对象:

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

JavaScript中是否有任何保证当我随后访问这两个属性时Obj['SomeProperty'],Obj[69]以及相应的值function ( ) { console.log("Accessed some property"); };69在O(1)时间内查找?我知道接入运营商[]提供了一个经验丰富的程序员的印象是,他处理一个O(1)查找结构,但不能将它有可能为一个JavaScript引擎来实现Object的方式,使得性能为O抬头(1 )?



1> Bergi..:

JavaScript中有什么保证在O(1)时间内查找值吗?

不会.除了ES6集合之外, JavaScript不提供任何复杂性保证.

我知道访问操作符[]给一个经验丰富的程序员给人的印象是他正在处理O(1)查找结构

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

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

JavaScript引擎是否有可能以某种方式实现Object,以便在O(1)中不查找属性?

是的,这是可能的.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有