ES2022 的新api:Object.hasOwn()

要检测某个属性是否是对象自己的(非原型链上的),可以使用 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
81 views
Comments
登录后评论
Sign In