前言
对象遍历可通过for...in,Object.keys以及Object.getOwnPropertyNames,这三种方法是有区别的
创建对象
const obj = {
name: "swt",
age: 20
}
Object.defineProperty(obj,"gender", {
enumerable: false,
value: "男"
})
Object.prototype.sex = "男"
对象本身定义一个不可枚举属性并在原型上定义一个属性
for...in
for(let key in obj) {
console.log(key)
}
//name
//age
//sex
for...in遍历对象以及原型链上的所有可枚举属性
Object.keys()
console.log(Object.keys())
// ["name", "age"]
Object.keys()遍历对象的可枚举属性,不会遍历原型链上的属性
Object.getOwnPropertyNames()
console.log(Object.getOwnPropertyNames(obj))
// ["name", "age", "gender"]
Object.getOwnPropertyNames()遍历对象所有属性包括不可枚举属性,不会遍历原型链上的属性