JS中使用hasOwnProperty比直接访问属性要慢?

多次测试发现hasOwnProperty比直接访问元素慢8-10倍。

MDN对hasOwnProperty的介绍:

这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

原来我的理解是,hasOwnProperty不需要查找原型链,所以速度会更快。现在我的理解是hasOwnProperty需要通过查找和判断该属性是否继承自原型链所以速度更慢。

正确的理解应该怎么的,或者说是我测试有误,望指出,谢谢!

测试环境:win 10, i3-6100 3.7GHz, 8G RAM, Chrome 61。测试代码如下:

https://img3.mukewang.com/5c6799e70001721903570868.jpg

12345678_0001
浏览 779回答 1
1回答

FFIVE

没有具体考究,猜测快的原因是因 Loop-invariant code motion 被移出了循环。试一下循环里再对 toString 调用不可内联函数去除引擎优化function BLACKHOLE () {  try { } catch (e) { }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript