📜  JavaScript对象hasOwnProperty()(1)

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

JavaScript对象hasOwnProperty()

在JavaScript中,有一个非常重要的方法叫做hasOwnProperty(),它用于判断一个对象是否包含指定的属性。在开发过程中,特别是当需要遍历一个对象的属性时,判断它是否包含某个属性非常重要。

语法

hasOwnProperty()方法是JavaScript中Object对象自带的方法,因此可以直接在任何对象上调用。它的语法如下:

object.hasOwnProperty(property)

参数说明:

  • object:必选项。要检查的对象。
  • property:必选项。要检查的属性的名称,可以是字符串或符号。
返回值

如果指定对象具有指定的属性,则返回true。如果对象不具有指定的属性,或者指定的属性是该对象的原型中的属性之一,则返回false

使用示例

下面是一个例子,演示了如何使用hasOwnProperty()方法来判断一个对象是否包含某个属性:

let person = {name: 'Tom', age: 21};

if (person.hasOwnProperty('name')) {
  console.log('person对象包含name属性');
} else {
  console.log('person对象不包含name属性');
}

if (person.hasOwnProperty('gender')) {
  console.log('person对象包含gender属性');
} else {
  console.log('person对象不包含gender属性');
}

上述代码输出结果为:

person对象包含name属性
person对象不包含gender属性
注意事项

需要注意的是,hasOwnProperty()方法只会在指定对象中查找,它不会去查找该对象原型链中的属性。如果想要在原型链中查找属性,可以使用in运算符。

举个例子:

let person = {name: 'Tom', age: 21};
let teacher = {subject: 'Math'};

teacher.__proto__ = person;

if (teacher.hasOwnProperty('subject')) {
  console.log('teacher对象包含subject属性');
} else {
  console.log('teacher对象不包含subject属性');
}

if ('name' in teacher) {
  console.log('teacher对象包含name属性');
} else {
  console.log('teacher对象不包含name属性');
}

上述代码输出结果为:

teacher对象包含subject属性
teacher对象包含name属性

在这个例子中,teacher对象继承了person对象中的属性,因此它的原型链中包含name属性。但是,由于name属性在person对象中,而不是在teacher对象中,因此使用hasOwnProperty()方法时会返回false,但是使用in运算符可以返回true