JavaScript----hasOwnProperty()用法

669 阅读1分钟

hasOwnProperty()用来干什么?


JavaScript中Object对象原型上的hasOwnProperty() 用来判断一个属性是定义在对象本身而不是继承自原型链

或者说

hasOwnProperty是 JavaScript 中唯一处理属性并且不会遍历原型链的方法

1.png

从上面可以看到可以通过hasOwnProperty方法查找对象本身的key,那为什么还要使用Object.prototype.hasOwnProperty.call()呢?

javascript没有将hasOwnProperty作为一个敏感词

这就导致可能发生下面的事情:

2.png

或者:

3.png

那个我帅不帅的事情就不讨论了哈。 帅就完了!哈哈!

4.webp

回归正题,咱们一起来看下Object.prototype.hasOwnProperty.call()的效果

5.png

从上面可以清晰的看到,Object.prototype.hasOwnProperty.call()这种方式,并不会被“帅不帅”所影响。

特殊情况 Object.create(null)

6.png

这样创建的Object没有任何特性,使用hasOwnProperty会报错。


总结:

  • 不要轻易使用Object.prototype的方法,例如 hasOwnProperty, propertyIsEnumerableisPrototypeOf 方法,这些方法可能被对象自身的同名属性覆盖或者对象是个null对象。
  • 如果一定要使用,可以使用Object.prototype.hasOwnProperty.call()Object.keys().includes()in等其余方式进行替换,最大程度的保证程序不出bug!!!

不想加班!!!