iterator与for…of原理
iterator原理:
当可遍历对象被for…of遍历的时候,[Symbol.iterator] ( )就会被调用,返回一个iterator对象。
var arr = [1, 2, 3, 4]
let item = arr[Symbol.iterator]
console.log(item);
console.log(item.next());
console.log(item.next());
console.log(item.next());
console.log(item.next());
console.log(item.next());
for…of的原理:
当可遍历对象被for…of遍历的时候,[Symbol.iterator] ( )就会被调用,返回一个iterator对象。
iterator对象里面有一个next()方法,调用next()方法,返回一个对象,对象里面有value和done属性,一直到
done为true的时候结束执行
for…of为什么不能遍历对象: 因为对象上面没有(Symbol.iterator)方法
//可以打印试试
console.log(Array.prototype);
console.log(String.prototype);
console.log(Set.prototype);
console.log(Map.prototype);
console.log(Object.prototype);
本文详细解释了JavaScript中iterator和for...of的机制,包括如何通过`Symbol.iterator`方法生成iterator对象,以及next()方法的工作原理。同时讨论了for...of遍历对象的限制,由于对象不一定具有`Symbol.iterator`,导致其不能遍历所有对象。
1万+





