目录
- 如何获得对象非原型链上的属性?
如何获得对象非原型链上的属性?
要获取对象上非原型链上的属性,可以使用 hasOwnProperty()
方法。这个方法是 JavaScript 内置的对象方法,用于检查一个对象是否包含指定名称的属性,并且该属性是对象自身的属性,而不是继承来的属性。
var obj = {
name: 'John',
age: 30
}
console.log(obj.hasOwnProperty('name')) // true
console.log(obj.hasOwnProperty('toString')) // false
以上代码中,obj
对象具有自己的属性 name
和 age
。使用 hasOwnProperty()
方法,我们可以检查这些属性是否属于对象自身的属性。obj.hasOwnProperty('name')
返回 true
,表示 name
是 obj
对象自身的属性。而 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"]
这将返回一个数组,包含对象自身的所有属性的名称。通过这种方式,你可以获取对象上所有的属性,包括非原型链上的属性。
持续学习总结记录中,回顾一下上面的内容:
要获取对象自身的属性,而非原型链上的属性,可以使用对象本身的方法或属性。如果对象自身包含该属性,则直接通过对象访问;如果对象自身没有该属性,就不会去原型链上查找。另外,可以使用 hasOwnProperty 方法来检查属性是否存在于对象自身而非原型链上。