1 回答
TA贡献1936条经验 获得超6个赞
使用Object.hasOwnProperty很奇怪,因为它使您看起来像是在使用静态方法,例如Object.assign().
它仍然有效,因为如果在 上找不到属性Object,它会回退到Function.prototype对象。而且,这个对象继承自Object.prototype. 因此,如果您有自定义实现Function.prototype.hasOwnProperty,Object.hasOwnProperty则将使用该实现而不是Object.prototype.hasOwnProperty
console.log( Object.hasOwnProperty === Object.prototype.hasOwnProperty ) // true
console.log( Object.getPrototypeOf(Object) === Function.prototype ) // true
console.log( Object.getPrototypeOf(Function.prototype) === Object.prototype ) // true
Function.prototype.hasOwnProperty = _ => 'custom implementaion in Function.prototype'
const obj = { prop: 10 }
console.log(Object.hasOwnProperty.call(obj, 'prop')) // custom implementaion
console.log(Object.prototype.hasOwnProperty.call(obj, 'prop')) // true
注意:Object.prototype.hasOwnProperty.call(myObj, prop)和之间的区别在这里myObj.hasOwnProperty(prop)解释
添加回答
举报