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) 判斷屬性是否是自身擁有的屬性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章