什么是在"中"经营者或obj.hasOwnProperty的大O符号的效率(丙)

hak*_*ick 7 javascript performance big-o

Mozilla的网站清楚地描述了hasOwnProperty()in运营商.

但是,它没有提供有关其效率的任何实施细节.

我怀疑它们是O(1)(恒定时间)但是很想看到可能存在的任何参考或测试.

ale*_*lex 7

将我的评论转化为答案.

hasOwnProperty() 应该O(1),因为它是一个关键查找,但它将是特定于实现.

in肯定会更复杂(尽管应该与hasOwnProperty()该对象上的属性存在相同),因为它在原型链上,寻找该属性.这就是为什么经常建议hasOwnProperty()在迭代对象属性时使用for ( in ).

要查明,请检查这些功能的源代码.使用来源,卢克:)

  • 哈希映射还取决于哈希函数以及它发生冲突的频率。如果存在大量碰撞,则最终可能会出现 O(log(n)) 到 O(n) 的情况,具体取决于碰撞的严重程度。当然,这还取决于索引有多大以及重新索引的频率(即从索引 32 到 64)。 (2认同)

Dav*_*nco 5

我的理论是in应该比更快hasOwnProperty()inhasProperty()(根据标准:http//www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf-参见第79页)的代理,该代理是内部广泛使用的功能语言(并会进行高度优化)。实际上,测试表明,平均而言,in速度更快。

链接:http//jsfiddle.net/VhhzR/2/

在Firefox中,in绝对更快。在Chrome中,in只有处理复杂的对象(令人费解)时,速度才会更快。在Internet Explorer中,in再次领先。

希望这对您有所帮助:)