在 JavaScript 中检查对象属性是否存在的三种方法

摘要:本教程将向您介绍如何检查对象中是否存在属性。

JavaScript 提供了三种常见的方法来检查对象中是否存在属性

  • 使用 hasOwnProperty() 方法。
  • 使用 in 运算符。
  • 将属性与 undefined 进行比较。

使用 hasOwnProperty() 方法

JavaScript Object.prototype 具有方法 hasOwnProperty(),如果对象中存在属性,则返回 true

let result = targetObject.hasOwnProperty(propertyName);Code language: JavaScript (javascript)

以下示例声明了一个 person 对象

let person = {
   firstName: 'John',
   lastName: 'Doe'
};Code language: JavaScript (javascript)

以下使用 hasOwnProperty() 方法检查 person 对象中是否存在 firstName 属性

let result = person.hasOwnProperty('firstName');
console.log(result); // trueCode language: JavaScript (javascript)

但是,age 属性在 person 对象中不存在,因此以下代码返回 false

let result = person.hasOwnProperty('age');
console.log(result); // falseCode language: JavaScript (javascript)

请注意,hasOwnProperty() 在对象的自身属性中查找属性。

例如,所有对象都继承了 ObjecttoString 属性,hasOwnProperty() 方法不会将其检测为属性

let result = person.hasOwnProperty('toString'); 
console.log(result); // falseCode language: JavaScript (javascript)

使用 in 运算符

in 运算符如果对象中存在属性,则返回 true。如果对象中不存在属性,则返回 false

propertyName in targetObject

以下示例使用 in 运算符来检查 person 对象中是否存在 firstNameage 属性

let person = {
   firstName: 'John',
   lastName: 'Doe'
};

let result = 'firstName' in person; 
console.log(result); // true

result = 'age' in person;
console.log(result); // falseCode language: JavaScript (javascript)

hasOwnProperty() 方法不同,in 运算符在对象的自身属性和继承属性中查找属性。

以下示例使用 in 运算符检查 person 对象中是否存在 toString 属性。它返回 true,因为 toStringperson 对象的继承属性。

let person = {
   firstName: 'John',
   lastName: 'Doe'
};

let result = 'toString' in person;
console.log(result); // trueCode language: JavaScript (javascript)

将属性与 undefined 进行比较

当您访问对象中不存在的属性时,您将获得 undefined。因此,您可以将属性与 undefined 进行比较以检查对象中是否存在属性

let person = {
   firstName: 'John',
   lastName: 'Doe'
};

let result = person.firstName !== undefined;
console.log(result); // trueCode language: JavaScript (javascript)

如果对象具有值为 undefined 的属性,则将属性与 undefined 进行比较将返回不正确的结果。例如

let person = {
   firstName: 'John',
   lastName: 'Doe',
   age: undefined
};

let result = person.age !== undefined;
console.log(result); // falseCode language: JavaScript (javascript)

在本例中,age 属性确实存在于 person 对象中。但是,它的初始值为 undefined。因此,将 person.ageundefined 进行比较返回 false,这与预期不符。

摘要

  • 使用 hasOwnProperty() 方法来检查对象自身的属性中是否存在属性。
  • 使用 in 运算符来检查对象自身的属性和继承属性中是否存在属性。
  • 将属性与 undefined 进行比较,仅在您确定属性的初始值不是 undefined 时才能检查属性是否存在。
本教程对您有帮助吗?