请使用以下代码示例:
var myObject = {};
var i = 100;
while (i--) {
myObject["foo"+i] = new Foo(i);
}
console.log(myObject["foo42"].bar());
Run Code Online (Sandbox Code Playgroud)
我有几个问题.
主要引擎(IE,Mozilla,Chrome,Safari)使用什么样的数据结构来存储键值对?我希望它是一种二进制搜索树,但我认为它们可能会使用链表(因为迭代是按插入顺序完成的).
如果他们确实使用搜索树,它是自我平衡的吗?因为具有传统搜索树的上述代码将创建不平衡树,导致用于搜索的O(n)的最坏情况场景,而不是用于平衡树的O(log n).
我只是问这个,因为我将编写一个库,需要从数据结构中有效地检索密钥,虽然我可以实现自己的或现有的红黑树,但我宁愿使用本机对象属性,如果它们是足够有效.
javascript time-complexity javascript-engine javascript-objects data-structures
这是关于我在亚马逊采访时与面试官进行的辩论.
我来创建一个对象:
var Obj = {};
Obj['SomeProperty'] = function ( ) { console.log("Accessed some property"); };
Obj[69] = true;
Run Code Online (Sandbox Code Playgroud)
JavaScript中是否有任何保证当我随后访问这两个属性时Obj['SomeProperty'],Obj[69]以及相应的值function ( ) { console.log("Accessed some property"); };并69在O(1)时间内查找?我知道接入运营商[]提供了一个经验丰富的程序员的印象是,他处理一个O(1)查找结构,但不能将它有可能为一个JavaScript引擎来实现Object的方式,使得性能不为O抬头(1 )?
javascript complexity-theory time-complexity data-structures
javascript ×2