要检测某个属性是否是对象自己的(非原型链上的),可以使用 obj.hasOwnProperty('a')
。但这个方法的问题在于,如果对象的原型为 null
,那么它就无法继承 Object.prototype.hasOwnProperty
,自然也就不能使用这个 api。如下:
const obj = Object.create(null)
obj.a = 1
obj.hasOwnProperty('a') // 报错
而使用 Object.hasOwn()
,则没有这个问题。如下:
const obj = Object.create(null)
obj.a = 1
Object.hasOwn(obj,'a') // true