判斷對(duì)象是否具有屬性的 5 種方法

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

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

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

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

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

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

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

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

