简介
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴漏该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后, 及时不关心对象的内部构造,也可以按顺序访问其中的每个元素
- 为遍历不同数据结构的‘集合’提供统一的接口
- 能遍历访问‘集合’数据中的项,不关心项的数据结构
ES5
var kerwinEach = function (arr, callback) {
for (let i = 0; i < arr.length; i++) {
callback(i, arr[i]);
}
};
kerwinEach([11, 22, 33, 44], function (index, value) {
console.log(index, value);
var oli = document.createElement("li");
oli.innerHTML = value;
list.appendChild(oli);
});
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>迭代器模式</title>
</head>
<body>
<script>
var obj = {
code: 200,
name: "kerwin",
list: ["aaa", "bbb", "ccc"],
[Symbol.iterator]: function () {
let index = 0;
console.log(12);
return {
next: () => {
if (index < this.list.length) {
return {
value: this.list[index++],
done: false,
};
} else {
return {
value: undefined,
done: true,
};
}
},
};
},
};
// var it = obj[Symbol.iterator]();
// it.next();
// it.next();
// it.next();
// it.next();
for (let index of obj) {
console.log(index);
}
</script>
</body>
</html>