let obj={name:'张三',age:18,like:'motorcycle'}
1、for in 循环
for(let key in obj){
console.log(key) //name age like
}
for in循环遍历对象自身的和继承的可枚举属性,所以我们使用for in循环时要使用hasOwnProperty方法对属性进行判断,只遍历对象自身属性。所以推荐第二种for in循环。
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key) //name age like
}
}
2、es6中的方法
//Object.keys() 返回一个数组,包括对象自身的所有可枚举属性的键名
for (let key of Object.keys(obj)) {
console.log(key); // name age like
}
//Object.values() 返回一个数组,包括对象自身的所有可枚举属性的键值。
for (let key of Object.values(obj)) {
console.log(key); // 张三 18 motorcycle
}
//Object.entries() 返回一个数组,包括对象自身的所有可枚举属性的键值对数组。
for (let [key, value] of Object.entries(obj)) {
console.log([key, value]); // ["name", "张三"] ["age", 18] ["like", "motorcycle"]
}
3、使用Object.getOwnPropertyNames(obj)遍历
返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)
Object.getOwnPropertyNames(obj).forEach(function(key){
console.log(key,obj[key]); //name 张三 age 18 like motorcycle
});
Object.keys()的优化使用
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]); //name 张三 age 18 like motorcycle
});