重写数组for…of底层用的迭代器
for…of 底层用Symbol(Symbol.iterator)迭代器
…arr 底层用Symbol(Symbol.iterator)迭代器
示例图
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>对象遍历重写iterator接口2</h1>
</body>
<script>
//第二步重写Symbol(Symbol.iterator) 这里发现是使用done来判断是否结束的,done为true是为结束了
function iteratorUtil() {
let index = -1;
let _this = this;
return {
next() {
let len = _this.length;
//console.log(len);
index++;
//console.log(index);
return index < len ? {
value: _this[index],
done: false
} : {
value: _this[index],
done: true
};
}
};
}
Array.prototype[Symbol.iterator] = iteratorUtil;
var arr = [1, 2, 3, 4];
console.log(arr);
for (const item of arr) {
console.log(item);
}
console.log(...arr);
</script>
</html>