在 Javascript 中你可能需要判断对象是否包含特定属性,或者该属性是否为自有属性。

本文将为您介绍如何在 JS 判断对象是否包含属性,或者该属性是否为自有属性。

前提知识

JS 中对象的属性分为如下两种:

  • 继承属性:是从所有父类继承来的属性。

  • 自有属性:自身对象新定义的属性。

JS 中对象的继承使用原型(Prototype)定义,可以使用 __proto__: value 语法形式定义,value 必须是 null 或对象:

const person = {
  name: "张三",
  age: 27,
  // __proto__ 设置了 [[Prototype]]。它继承了一个对象, address 为继承属性
  __proto__: {
    address: "街道",
  },
};

JS 判断对象是否包含属性

JS 判断对象是否包含属性,这里的属性即包括继承属性也包括自有属性。

使用 Javascript 内置的 in 关键字,判断 js 对象是否包含属性,示例如下:

console.log("name" in person)  // true,表示包含属性
console.log("address" in person)  // true,表示包含属性

JS 判断对象是否为自有属性

使用对象的继承方法 hasOwnProperty() 或者 Object 对象的静态方法 Object.hasOwn(),判断 js 对象是否包含属性,示例如下:

console.log(person.hasOwnProperty("name"))  // true,表示是自有属性
console.log(Object.hasOwn(person, "name"))  // true,表示是自有属性

console.log(person.hasOwnProperty("address"))  // fasle,表示不是自有属性
console.log(Object.hasOwn(person, "address"))  // fasle,表示不是自有属性

结语

本文介绍了在 Javascript 中如何判断对象是否包含属性,或属性是否是自有属性的方法。