JavaScript 中的 not in 運算子
 
物件是 JavaScript 中最常用的鍵值屬性。為了檢查某個屬性是否存在,JavaScript 提供了幾種可能性。今天的帖子將向你展示如何在 JavaScript 中檢查物件上是否存在特定屬性。
在 JavaScript 中檢查屬性是否存在
屬性與儲存在物件中的鍵值配對。一個 object 可以包含許多這樣的屬性。JavaScript 中是否存在某個屬性由操作符 id in object 或 Object.prototype.hasOwnProperty() 決定。
JavaScript 中的 Object.prototype.hasOwnProperty()
這是 JavaScript 提供的內建方法,用於檢查指定的屬性是否屬於 Object。它迭代物件並根據結果返回布林值。
語法:
Object.prototype.hasOwnProperty(prop);
此函式將 prop 作為 string 格式的輸入。它是一個強制性引數。此方法只檢查給定的屬性是否存在於物件中,而不管值如何。即使屬性值為 null 或 undefined,它也會返回 true。也可以在 Array 上呼叫此方法,因為該陣列是從 Object 派生的。有關更多資訊,請閱讀 hasOwnProperty() 方法的文件。
const inputObject = {
  id: 42,
  name: 'John Doe'
};
console.log(inputObject.hasOwnProperty('name'));
if (!inputObject.hasOwnProperty('email')) {
  inputObject.email = 'Johndoe@gmail.com';
}
console.log(inputObject);
在上面的程式碼塊中,我們定義了物件 id 和 name 的兩個屬性。當你傳遞 inputObject.hasOwnProperty('name') 時,它會檢查 inputObject 中是否存在 name 屬性。如果要檢查相反的條件,請新增!在條件之前,它將否定檢查。例如,如果物件內不存在新屬性,則可以新增新屬性。上面程式碼給出的輸出可以在下面看到。
輸出:
true
{
  email: "Johndoe@gmail.com",
  id: 42,
  name: "John Doe"
}
JavaScript 中的 in 運算子
它是 JavaScript 提供的內建方法,用於檢查物件或原型鏈是否擁有指定的屬性。它迭代物件並根據結果返回布林值。
語法:
prop in object
此函式將 prop 作為 string 格式的輸入。它是一個強制性引數。此方法僅檢查給定的屬性或陣列索引是否存在於 Object 或其 prototype chain。也可以在 Array 上呼叫此方法,因為該陣列是從 Object 派生的。有關更多資訊,請閱讀 in operator 方法的文件。
hasOwnProperty 和 in 運算子之間的主要區別在於,如果屬性是在物件內部繼承的或尚未宣告,則前一個返回 false。相比之下,in 運算子不會檢查物件原型鏈中的指定屬性。例如,Object 基類將 hasOwnProperty 作為一個函式,因此 hasOwnProperty 將返回 false,而 in 運算子將返回 true。
const inputObject = {
  id: 42,
  name: 'John Doe'
};
console.log('name' in inputObject);
if (!('phone' in inputObject)) {
  inputObject.phone = '7878787878';
}
console.log(inputObject);
在上面的程式碼塊中,我們定義了物件 id 和 name 的兩個屬性。當你在 inputObject 中傳遞 name 時,它會檢查 inputObject 中是否存在 name 屬性。如果要檢查相反的條件,請新增!在條件之前,否定檢查。例如,你可以新增一個新屬性 phone,如果它不存在於物件中。上面的程式碼片段給出的輸出如下所示。
輸出:
true
{
  id: 42,
  name: "John Doe",
  phone: "7878787878"
}
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn