前端JavaScript篇之如何获得对象非原型链上的属性?

目录

  • 如何获得对象非原型链上的属性?


如何获得对象非原型链上的属性?

要获取对象上非原型链上的属性,可以使用 hasOwnProperty() 方法。这个方法是 JavaScript 内置的对象方法,用于检查一个对象是否包含指定名称的属性,并且该属性是对象自身的属性,而不是继承来的属性。

var obj = {
  name: 'John',
  age: 30
}

console.log(obj.hasOwnProperty('name')) // true
console.log(obj.hasOwnProperty('toString')) // false

前端JavaScript篇之如何获得对象非原型链上的属性?_第1张图片

以上代码中,obj 对象具有自己的属性 nameage。使用 hasOwnProperty() 方法,我们可以检查这些属性是否属于对象自身的属性。obj.hasOwnProperty('name') 返回 true,表示 nameobj 对象自身的属性。而 obj.hasOwnProperty('toString') 返回 false,因为 toString 是从 Object.prototype 继承而来的属性,而不是 obj 对象自身的属性。

这样,我们就可以利用 hasOwnProperty() 方法来过滤原型链上的属性,只获取对象自身的属性。

请注意,hasOwnProperty() 方法只会检查对象自身的属性,而不会检查继承来的属性。如果你需要获取对象自身以及继承的所有属性,可以使用 Object.getOwnPropertyNames() 方法或 for...in 循环。但要注意,for...in 循环会遍历所有可枚举的属性,包括自身和继承的属性。

var obj = {
  name: 'John',
  age: 30
}

console.log(Object.getOwnPropertyNames(obj)) // ["name", "age"]

前端JavaScript篇之如何获得对象非原型链上的属性?_第2张图片

这将返回一个数组,包含对象自身的所有属性的名称。通过这种方式,你可以获取对象上所有的属性,包括非原型链上的属性。

持续学习总结记录中,回顾一下上面的内容:
要获取对象自身的属性,而非原型链上的属性,可以使用对象本身的方法或属性。如果对象自身包含该属性,则直接通过对象访问;如果对象自身没有该属性,就不会去原型链上查找。另外,可以使用 hasOwnProperty 方法来检查属性是否存在于对象自身而非原型链上。

你可能感兴趣的:(JavaScript,前端知识点,前端,javascript,开发语言)