javascript:检查JavaScript对象属性是否存在
1 使用in操作符
in 操作符是检查对象中是否存在某个属性的简单直接的方法。它不仅会检查对象自身的属性,还会检查其原型链上的属性。
const car = { make: 'Toyota', model: 'Corolla' };
console.log('make' in car); // true
console.log('year' in car); // false
在这个例子中,'make' in car 返回 true,因为 make 是 car 对象的属性。而 year 返回 false,因为 year 不存在于 car 对象中。
如果属性在原型链上,如下:
function Vehicle() {
this.make = 'Toyota';
}
Vehicle.prototype.model = 'Corolla';
const myCar = new Vehicle();
console.log('model' in myCar); // true
虽然 model 并不是 myCar 对象本身的属性,而是定义在其原型上的属性,in 操作符仍然返回 true。这是因为 in 操作符会遍历整个原型链进行检查。
2 使用hasOwnProperty方法
const person = { name: 'Alice', age: 30 };
console.log(person.hasOwnProperty('name')); // true
console.log(person.hasOwnProperty('gender')); // false
function Animal() {
this.type = 'Dog';
}
Animal.prototype.legs = 4;
const myPet = new Animal();
console.log(myPet.hasOwnProperty('legs')); // false
3 使用三元操作符
const book = { title: 'JavaScript Essentials', author: 'John Doe' };
console.log(book.pages !== undefined ? true : false); // false
console.log(book.title !== undefined ? true : false); // true