当前位置:网站首页>es6对象迭代器iterator
es6对象迭代器iterator
2022-08-09 11:09:00 【一头小驴】
非原创,只是从相关教程拉取代码解析。深入了解一门语言之后,你会发现前端水很深。菜鸟一枚,共同成长
http://caibaojian.com/es6/iterator.html
//Obj对象 形成的集合链可以被 for...of 遍历,of指向链上的第一个对象,使用next指向下一个对象
function Obj(value) {
this.value = value;
this.next = null;
}
//注意,迭代器函数返回的是 当前对象的 遍历器对象(而且一定会包含一个名为next的方法,调用该对象的next方法,
在返回一个值的同时,自动将内部指针移到下一个实例)。
Obj.prototype[Symbol.iterator] = function() {
var current = this; //定位到当前Obj的实例对象
console.log(current instanceof Obj); //返回true ,说明this指向Obj实例
console.log(current.__proto__ === Obj.prototype)
var iterator = {
next: function next() {
if (current !==null) { //链上的最后一个对象的next =null,就可以直接指定done:
var value = current.value;
current = current.next;
return {done: false,value: value};
}
else {
return {done: true};
}
},
}
return iterator;
}
var one = new Obj(1);
var two = new Obj(2);
var three = new Obj(3);
one.next = two;
two.next = three;
for (var i of one){
console.log(i);
}
// 1
// 2
// 3
上面是一个对象集合的遍历,你需要手动指定下一个对象。next属性指向下一个链接对象。
如下是针对数组遍历的例子。
var it = makeIterator(['a', 'b']);
it.next() // { value: "a", done: false }
it.next() // { value: "b", done: false }
it.next() // { value: undefined, done: true }
function makeIterator(array) {
var nextIndex = 0;
return {
next: function() {
return nextIndex < array.length ?
{value: array[nextIndex++], done: false} :
{value: undefined, done: true};
}
};
}
边栏推荐
猜你喜欢
随机推荐
For versions corresponding to tensorflow and numpy, report FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecate
华为VRRP+MSTP联动接口检测实验案例
The complete grammar of CSDN's markdown editor
Cesium加载三维模型数据
OC-NSTimer
enum in c language
Since I use the HiFlow scene connector, I don't have to worry about becoming a "dropper" anymore
PTA 矩阵运算
Looper 原理浅析
Missing URI template variable ‘employeeNumber‘ for method parameter of type String
剖析STM32F103时钟系统
STemwin中GUI_Exec和GUI_Delay
1008 Elevator (20分)
Oracle数据库的两种进入方式
gdb 10.2的安装
爱可可AI前沿推介(8.9)
程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果
PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization Paper Reading
fork creates multiple child processes
彻底理解工厂模式