摘要:本教程将向您介绍如何检查对象中是否存在属性。
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); // true
Code language: JavaScript (javascript)
但是,age
属性在 person 对象中不存在,因此以下代码返回 false
let result = person.hasOwnProperty('age');
console.log(result); // false
Code language: JavaScript (javascript)
请注意,hasOwnProperty()
在对象的自身属性中查找属性。
例如,所有对象都继承了 Object
的 toString
属性,hasOwnProperty() 方法不会将其检测为属性
let result = person.hasOwnProperty('toString');
console.log(result); // false
Code 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); // false
Code 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); // true
Code language: JavaScript (javascript)
将属性与 undefined 进行比较
当您访问对象中不存在的属性时,您将获得 undefined
。因此,您可以将属性与 undefined
进行比较以检查对象中是否存在属性
let person = {
firstName: 'John',
lastName: 'Doe'
};
let result = person.firstName !== undefined;
console.log(result); // true
Code language: JavaScript (javascript)
如果对象具有值为 undefined
的属性,则将属性与 undefined
进行比较将返回不正确的结果。例如
let person = {
firstName: 'John',
lastName: 'Doe',
age: undefined
};
let result = person.age !== undefined;
console.log(result); // false
Code language: JavaScript (javascript)
在本例中,age
属性确实存在于 person
对象中。但是,它的初始值为 undefined
。因此,将 person.age
与 undefined
进行比较返回 false
,这与预期不符。
摘要
- 使用
hasOwnProperty()
方法来检查对象自身的属性中是否存在属性。 - 使用
in
运算符来检查对象自身的属性和继承属性中是否存在属性。 - 将属性与
undefined
进行比较,仅在您确定属性的初始值不是undefined
时才能检查属性是否存在。