Mozilla 的网站清楚地描述了hasOwnProperty()
。和 in
运营商。
但是,它没有提供有关其效率的任何实现细节。
我怀疑它们会是 O(1)
(常数时间),但我希望看到任何可能存在的引用或测试。
最佳答案
将我的评论变成答案。
hasOwnProperty()
应该 O(1)
,因为它是一个键查找,但它是特定于实现的。
in
肯定会更复杂(尽管应该与 hasOwnProperty()
相同,如果属性存在于该对象上),因为它沿着原型(prototype)链上升, 寻找那个属性(property)。这就是为什么通常建议在使用 for ( in )
遍历对象属性时使用 hasOwnProperty()
。
要找出答案,请检查这些函数的源代码。使用来源,卢克 :)
关于javascript - "in"运算符或 obj.hasOwnProperty(prop) 的 Big O 表示法的效率是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012242/