HOWTO · JavaScript

JavaScript 中的 hasOwnProperty

JavaScript hasOwnProperty 以布尔值判断,此属性专门过滤掉已定义对象的键。它不一定需要迭代整个对象配置,而只是检查某个属性的可用性。

本页内容

我们经常看到关于 in 惯例和 hasOwnProperty 的两难境地,但在特定情况下两者的工作方式不同。主要概念是 in 适用于具有继承属性并导致 true 的对象,而 hasOwnProperty 仅对未继承而是显式定义的属性返回 true。

在这里,我们将只讨论 JavaScript 中的 hasOwnProperty。

检查 JavaScript 中对象的 hasOwnProperty

在 JavaScript 中,检查属性是否定义的结构是这样的 - objectName.hasOwnProprty(property)。在这里,一个对象可以是一个数组,也可以是一个键值对。你可以检查定向路径。

在 JavaScript 中对数组对象使用 hasOwnProperty

数组从 0 开始索引,直到最后一个可用元素。因此,我们更喜欢使用索引值来调用数组对象的属性。下面的例子给出了一个清晰的思路。

代码片段:

var myObj = ['Liza', 'Kary', 'Blake'];

console.log(myObj.hasOwnProperty(2));
console.log(myObj.hasOwnProperty(3));

输出:

javascript 中数组的 hasownprop

在 JavaScript 中的 key-value 对对象上使用 hasOwnProperty

在这方面,我们将考虑一个具有键值(string)和属性(任何数据类型)的字典。我们来看下面的例子:

代码片段:

var myObj = {
  pet : "penguine",
  age : 5,
}

console.log(myObj.hasOwnProperty("age"));
console.log(myObj.hasOwnProperty("color"));

输出:

javascript 中 obj 的 hasownprop

如你所见,对象 myObj 只有两个键 - pet 和 age。如果我们通过 hasOwnProperty 仅调用这两个属性,我们将看到控制台结果 true。否则,我们调用随机属性 color,结果为 false。

检查类对象的 hasOwnProperty

JavaScript ES6 有一个额外的特性 class,使用 constructor 可以定义一些动态对象。在声明对象之后,你可以通过为它们定义值来轻松访问它们。演示将清除本节的解释。此外,对于任何自定义值,如果属性存在于类构造函数中,你将得到答案 true;否则,假。

代码片段:

class pet {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}

const pet1 = new pet('Izequel', 5);

console.log(pet1.hasOwnProperty('name'));
console.log(pet1.hasOwnProperty('color'));

javascript 中类的 obj 的 hasOwnprop