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 中的 hasOwnProperty

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

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

代码片段:

var myObj = {
pet : "penguine",
age : 5,
}
console.log(myObj.hasOwnProperty("age"));
console.log(myObj.hasOwnProperty("color"));

输出:

JavaScript 中的 hasOwnProperty

如你所见,对象 myObj 只有两个键 – petage。如果我们通过 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 中的 hasOwnProperty