跳到主要内容

JavaScript 对象的 Object.hasOwnProperty() 方法详解

Object.hasOwnProperty()方法检查对象是否拥有给定的属性。

示例

const obj = {};
obj.id = 42;

// 检查obj中是否有id属性
console.log(obj.hasOwnProperty("id"));

// 输出: true

hasOwnProperty()语法

hasOwnProperty()方法的语法是:

obj.hasOwnProperty(prop);

这里,obj是我们想要搜索属性的对象。

作为一个静态方法,我们需要使用类名Object来访问hasOwnProperty()

hasOwnProperty()参数

hasOwnProperty()方法接受:

  • prop - 要测试的属性的String名称或Symbol

hasOwnProperty()返回值

hasOwnProperty()方法返回一个Boolean值:

  • true - 如果对象拥有指定的属性
  • false - 如果对象没有拥有指定的属性

注释:

  • in运算符不同,此方法不会检查对象的原型链中的属性。
  • 即使属性的值为nullundefinedhasOwnProperty()也会返回true

示例:JavaScript对象Object.hasOwnProperty()

// 创建一个带有id属性的对象
const obj = { id: 42 };

// 检查obj中是否存在id
console.log(obj.hasOwnProperty("id"));

// 输出: true

// 检查obj中是否存在name
console.log(obj.hasOwnProperty("name"));

// 输出: false

// 继承的属性返回false
console.log(obj.hasOwnProperty("toString"));

// 输出: false

在上面的示例中,我们创建了一个带有单个属性id的对象obj。

然后我们使用hasOwnProperty()方法检查obj是否具有id和name属性。

输出表明,对象拥有id属性,但没有拥有name属性。

最后,我们使用hasOwnProperty()检查对象中是否定义了toString

然而,即使toString是JavaScript中所有对象的属性,我们仍然得到false作为输出。

这是因为toString是一个继承属性,而不是直接在对象本身中定义的属性。

推荐阅读: