2023年7月26日
for in
for in 循环是最基础的遍历对象的方式,它还会得到对象原型链上的属性
// 创建一个对象并指定其原型,bar 为原型上的属性
const obj = Object.create({
bar: 'bar'
})
// foo 为对象自身的属性
obj.foo = 'foo'
for (let key in obj) {
console.log(obj[key]) // foo, bar
}
可以看到对象原型上的属性也被循环出来了
在这种情况下可以使用对象的 hasOwnProperty() 方法过滤掉原型链上的属性
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(obj[key]) // foo
}
}
这时候原型上的 bar 属性就被过滤掉了
Object.keys
Object.keys() 是 ES5 新增的一个对象方…