在 JavaScript 中,每个对象都有一个原型对象,可以通过 Object.getPrototypeOf()
方法访问。原型对象也是一个对象,因此它也有一个原型对象。在原型链的最顶端是 Object.prototype
对象。
Object.prototype.hasOwnProperty()
是一个非常有用的原型方法,可以用于判断一个对象是否拥有指定的属性。在ES10中,Object.prototype.hasOwnProperty()
方法成为 Accessible Object.prototype.hasOwnProperty。
Accessible Object.prototype.hasOwnProperty
在ES10中,将 Object.prototype.hasOwnProperty 方法称为可访问的(accessible)。这意味着,当对象的原型是 null 时,我们也可以使用这个方法,而不会抛出一个 TypeError
。
在 ES10 之前,当这个方法被用于一个原型为 null 的对象时,就会抛出一个错误。在 ES10 中,它返回 false
。
使用 Accessible Object.prototype.hasOwnProperty
Object.prototype.hasOwnProperty()
方法可以用于判断一个对象是否拥有指定的属性,返回一个布尔值。
示例如下:
-- -------------------- ---- ------- ----- --- - - ----- -------- ---- --- -------- - ----- ---------- -------- ------- - -- ---------------------------------------- -- ---- --------------------------------------- -- ---- ------------------------------------------- -- ---- ------------------------------------------------ -- ---- --------------------------------------------------- -- ---- -------------------------------------------------- -- ----- -------------------------------------------- -- ----- --------------------------------------------- -- -----
在这个示例中,我们创建了一个对象 obj
,并向其添加了三个属性:name
、age
和 address
。其中 address
属性是一个对象,包含两个属性:city
和 country
。
我们可以使用 hasOwnProperty()
方法来检查对象是否有这些属性。
指导意义
Object.prototype.hasOwnProperty()
的指导意义是,在原型链中查找一个对象是否拥有某个指定的属性,并返回一个布尔值。在使用该方法的时候,要注意以下几点:
- 如果该属性在实例对象中不存在,但是该属性在实例对象的原型链上存在,也会返回
false
; - 可以通过
in
操作符,来查询一个实例对象的原型链上是否存在某个属性; - 遍历实例对象属性时,要小心遍历到了原型链上的属性。
结论
在 ES10 中,Object.prototype.hasOwnProperty()
方法成为 Accessible Object.prototype.hasOwnProperty,可以使用在对象原型为 null 的情况下,避免TypeError错误。在实际开发中,我们可以用这个方法来判断对象是否拥有指定的属性,并通过合理的方式遍历对象及其原型链上的属性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6720521c2e7021665e01b29d