JS 遍历对象所有的属性和值(包括子属性)

代码:

let user = {
  name: 'john',
  age: 17,
  date: new Date(),
  date1: null,
  order: {
    id: 123,
    price: '19yuan'
  },
  sayHi: function(){}
}

user.sayHi.content = "hello";

let person = {isHuman: true};

user.__proto__ = person;//指定user的原型对象为person

function iterateThroughAllKeysAndValues(obj) {
  for(let key in obj) {
    if(!obj.hasOwnProperty(key)) return;//排除掉原型继承而来的属性
    console.log(key, obj[key]);
    if(typeof obj[key] == 'object' || typeof obj[key] == 'function') {
      iterateThroughAllKeysAndValues(obj[key]);//递归遍历属性值的子属性
    }
  }
}

iterateThroughAllKeysAndValues(user)

知识点

  • for…in 遍历对象的所有属性,包括对象的原型属性,但不包括自身和原型的不可枚举的属性
  • obj.hasOwnProperty(key) 判断属性是否是自身拥有的属性

你可能感兴趣的:(Javascript)