搞懂for in,Object.keys(),for of的区别
for in 和 Object.keys对比
for in和 Object.keys都是对象的循环遍历
for in循环遍历会走原型链,能遍历原型链上的属性
Object.keys()只会遍历对象自身的可枚举属性
举个例子:
function Fun() {
this.a = '1'
}
Fun.prototype.b = 3
let obj = new Fun()
console.log(Object.keys(obj)) // [ 'a' ]
for(let key in obj) {
console.log(key); // a, b
}
for in 和 for of对比
for of遍历数组只会遍历数组的内容值,不能遍历数组对象的属性值
for in遍历数组,会遍历数组的索引值,以及各个可枚举的属性
举个例子:
Array.prototype.b = 'hi';
let arr = [1, 2, 3];
arr.a = 'hello';
for (let value of arr) {
console.log(value); // 1,2,3
}
console.log('------')
for(let key in arr) {
console.log(key) // 0,1,2,3,a,b
}