JavaScript 中的 hasOwnProperty
Anika Tabassum Era
2023年10月12日
我們經常看到關於 in
慣例和 hasOwnProperty
的兩難境地,但在特定情況下兩者的工作方式不同。主要概念是 in
適用於具有繼承屬性並導致 true
的物件,而 hasOwnProperty
僅對未繼承而是顯式定義的屬性返回 true。
在這裡,我們將只討論 JavaScript 中的 hasOwnProperty
。
檢查 JavaScript 中物件的 hasOwnProperty
在 JavaScript 中,檢查屬性是否定義的結構是這樣的 - objectName.hasOwnProprty(property)
。在這裡,一個物件可以是一個陣列
,也可以是一個鍵值
對。你可以檢查定向路徑。
在 JavaScript 中對陣列物件使用 hasOwnProperty
陣列從 0
開始索引,直到最後一個可用元素。因此,我們更喜歡使用索引值來呼叫陣列物件的屬性。下面的例子給出了一個清晰的思路。
程式碼片段:
var myObj = ['Liza', 'Kary', 'Blake'];
console.log(myObj.hasOwnProperty(2));
console.log(myObj.hasOwnProperty(3));
輸出:
在 JavaScript 中的 key-value
對物件上使用 hasOwnProperty
在這方面,我們將考慮一個具有鍵值(string
)和屬性(任何資料型別)的字典。我們來看下面的例子:
程式碼片段:
var myObj = {
pet : "penguine",
age : 5,
}
console.log(myObj.hasOwnProperty("age"));
console.log(myObj.hasOwnProperty("color"));
輸出:
如你所見,物件 myObj
只有兩個鍵 - pet
和 age
。如果我們通過 hasOwnProperty
僅呼叫這兩個屬性,我們將看到控制檯結果 true
。否則,我們呼叫隨機屬性 color
,結果為 false
。
檢查類物件的 hasOwnProperty
JavaScript ES6 有一個額外的特性 class
,使用 constructor
可以定義一些動態物件。在宣告物件之後,你可以通過為它們定義值來輕鬆訪問它們。演示將清除本節的解釋。此外,對於任何自定義值,如果屬性存在於類建構函式
中,你將得到答案 true
;否則,假
。
程式碼片段:
class pet {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
const pet1 = new pet('Izequel', 5);
console.log(pet1.hasOwnProperty('name'));
console.log(pet1.hasOwnProperty('color'));