JS对象遍历方式

119 阅读1分钟

前言

对象遍历可通过for...inObject.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()遍历对象所有属性包括不可枚举属性,不会遍历原型链上的属性