判斷對象是否具有屬性的 5 種方法

英文 | https://javascript.plainenglish.io/5-ways-to-judge-if-an-object-has-a-property-ec6aa24187af
在編程開發(fā)時,我們經(jīng)常需要判斷一個對象是否具有某種屬性。在這里,我們列出 了5種判斷對象屬性的方法。
1、in Operator
如果指定屬性在指定對象或其原型鏈中,則 in Operator 返回 true。
用法:

但是 in Operator有個缺點(diǎn),那就是:如果屬性來自對象的原型,它仍然會返回 true。

2、Reflect.has() 方法
Reflect.has 方法允許我們檢查屬性是否在對象中。它像 in Operator 一樣作為函數(shù)工作。
用法:

3、 hasOwnProperty() 方法
hasOwnProperty() 方法返回一個布爾值,指示對象是否具有指定的屬性作為它自己的屬性(而不是繼承它)。
它可以正確地區(qū)分對象本身的屬性和其原型的屬性。
用法:

但是這種寫法有個缺點(diǎn),就是如果對象是用Object.create(null)創(chuàng)建的話,那么就不能用這個方法了。

4、Object.prototype.hasOwnProperty() 方法
解決前面的問題很簡單,我們只需要使用Object.prototype.hasOwnProperty。該方法是直接調(diào)用內(nèi)置的有效用函數(shù),跳過原型鏈。

5、Object.hasOwn() 方法
由于前面的幾種方式都不優(yōu)雅,ES2022有一個新的提議:Object.hasOwn
如果指定的對象具有指定的屬性作為其自己的屬性,則 Object.hasOwn() 靜態(tài)方法返回 true。如果屬性被繼承或不存在,則該方法返回 false。
用法:

寫在最后
以上就是我今天跟你分享的5種判斷對象屬性的方法,希望對你有用。
如果你喜歡我今天的內(nèi)容的話,請記得點(diǎn)贊我,關(guān)注我。
最后,感謝你的閱讀,祝編程愉快!
學(xué)習(xí)更多技能
請點(diǎn)擊下方公眾號
![]()

