摘要:本教程将向您介绍如何检查对象中是否存在属性。
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() 在对象的自身属性中查找属性。
例如,所有对象都继承了 Object 的 toString 属性,hasOwnProperty() 方法不会将其检测为属性
let result = person.hasOwnProperty('toString');
console.log(result); // falseCode language: JavaScript (javascript)使用 in 运算符
in 运算符如果对象中存在属性,则返回 true。如果对象中不存在属性,则返回 false。
propertyName in targetObject以下示例使用 in 运算符来检查 person 对象中是否存在 firstName 和 age 属性
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,因为 toString 是 person 对象的继承属性。
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.age 与 undefined 进行比较返回 false,这与预期不符。
摘要
- 使用
hasOwnProperty()方法来检查对象自身的属性中是否存在属性。 - 使用
in运算符来检查对象自身的属性和继承属性中是否存在属性。 - 将属性与
undefined进行比较,仅在您确定属性的初始值不是undefined时才能检查属性是否存在。