Do not access Object.prototype method 'hasOwnProperty' from target object.

使用hasOwnProperty判断对象上是否存在某个key值时遇到一个eslint报错
Do not access Object.prototype method 'hasOwnProperty' from target object.eslint[no-prototype-builtins](https://eslint.org/docs/rules/no-prototype-builtins)
不能在目标对象上直接访问原型链上的方法
原因在于,通过Object.create创建对象,可以指定对象的原型,因此直接访问原型链上的方法可能会导致未找到该方法从而报错

1、Object.create(proto[,propertierObject])用于创建一个新对象,通过其参数可以设置新对象的原型与初始化值

7524e130444248d68d554a8d4168923b.png

底层实现:

Object.create = function(proto) {
  function F() {}
  F.prototype = proto;
  return new F();
}

2、为了避免对象的原型链顶端不是Object,因此目标对象不直接访问原型上的方法,可以通过原型对象上调用方法,通过call改变this指向到目标对象上

Object.prototype.hasOwnProperty.call(obj, 'name');

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容