使用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])用于创建一个新对象,通过其参数可以设置新对象的原型与初始化值
底层实现:
Object.create = function(proto) {
function F() {}
F.prototype = proto;
return new F();
}
2、为了避免对象的原型链顶端不是Object,因此目标对象不直接访问原型上的方法,可以通过原型对象上调用方法,通过call改变this指向到目标对象上
Object.prototype.hasOwnProperty.call(obj, 'name');