一、前言
我们知道,在js的对象中,有下面几种属性:
- 可枚举属性
- 不可枚举属性
- 从原型链上继承的属性
- 以Symbol作为key值
今天,我们就来谈一谈如何遍历这些属性。
二、遍历可枚举属性
首先,遍历可枚举属性是非常常见的一个需求,我们平时比较常用的方法是for in和Object.keys(),这两个方法都能遍历可枚举属性,我们看看如下的代码:
let obj = {
name: "klx",
sex: "man",
age: 21
}
Object.keys(obj).forEach((key, index) => {
console.log(`${
key}:${
obj[key]}`);
})
//name:klx
//sex:man
//age:21
for(key in obj) {
console.log(`${
key}:${
obj[key]}`);
}
//name:klx
//sex:man
//age:21
可以看到,他们并没有什么区别。那么,这两个方法是完全一样的吗?我们再来看看下面的代码:
let obj = {
name: "klx",
sex: "man",
age: 21
}
let parent = {
parentName: "parent",
parentSex: "man",
parentAge:40
}
Object.setPrototypeOf(obj, parent);
Object.keys(obj).forEach((key, index) => {
console.log(`${
key}:${
obj[key]}`);
})
//name:klx
//sex:man
//age:21
for(key in obj) {
console.log(`${
key}: