代碼:
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;
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) 判斷屬性是否是自身擁有的屬性