📌  相关文章
📜  javascript 对象是否具有属性 - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:42.862000             🧑  作者: Mango

Javascript 对象是否具有属性

在 Javascript 中,我们可以使用 . 或者 [] 访问对象的属性。但有时候我们并不确定对象的属性是否存在,这时候我们需要判断对象是否具有该属性。

使用 in 运算符

我们可以使用 in 运算符来判断对象是否具有某个属性。其返回值为布尔类型,如果对象包含该属性,返回值为 true;否则,返回值为 false。

例如,我们可以判断对象 person 是否具有属性 name

const person = {
  age: 28,
  gender: 'female'
};

console.log('name' in person); // false

在上述例子中,person 对象没有 name 属性,因此 in 运算符返回 false。

使用 hasOwnProperty 方法

我们也可以使用对象的 hasOwnProperty 方法来判断对象是否具有某个属性。该方法返回布尔类型,如果对象包含该属性且该属性不是继承属性,返回值为 true;否则,返回值为 false。

例如,我们可以判断对象 person 是否具有属性 age

const person = {
  age: 28,
  gender: 'female'
};

console.log(person.hasOwnProperty('age')); // true

在上述例子中,person 对象具有 age 属性,且该属性为自身属性,因此 hasOwnProperty 方法返回 true。

区别

值得注意的是,使用 in 运算符判断对象是否具有某个属性时,如果该属性是从原型链上继承下来的,则仍会返回 true。而使用 hasOwnProperty 方法则不会。

例如,我们可以对继承自 Object 原型的对象进行判断:

const myObject = Object.create({ name: 'Bob' });

console.log('name' in myObject);                // true
console.log(myObject.hasOwnProperty('name'));  // false

在上述例子中,myObject 对象没有 name 属性,但它的原型对象具有 name 属性,因此 in 运算符返回 true,而 hasOwnProperty 方法返回 false。

总之,我们可以根据具体的业务需求选择使用 in 运算符或者 hasOwnProperty 方法来判断对象是否具有某个属性。