博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迭代器与iterable
阅读量:5292 次
发布时间:2019-06-14

本文共 988 字,大约阅读时间需要 3 分钟。

迭代器与iterable

最近在学习ES6,有两个概念一直纠缠不清,就是迭代器与iterable,查阅了一些资料,简单来说迭代器就是包含next方法的对象,而iterable是包含可以在其值上迭代的迭代器的对象,但它必须支持一个函数,其名称是专门的ES6符号值 Symbol.iterator,简单来说就是iterable要包含一个Symbol.iterator方法,上代码吧:

var iterator = {    next() {        return {            done: false,            value: 'Love xia'        };    }};

如上便是一个实现了标准迭代器接口的迭代器,需要说明的是迭代器不可for of遍历。

var iterable = {    [Symbol.iterator]() {        return this;    }};

上面是一个iterable,虽然毫无意义,我的理解就是拥有Symbol.iterator就拥有了资格,至于这个方法返回什么并不重要,为了有意义我们要返回迭代器,如下:

var iterable = {    [Symbol.iterator]() {        return {            next() {                return {                    value: 'Love xia',                    done: Math.random() > 0.7                }            }        };    }};

最后我们来做一个即是迭代器又是iterable的对象来总结一下:

var it = {    [Symbol.iterator]() {        return this;    },    next() {        return {            value: 'Love xia',            done: false        };    }};

理解有误的地方还请不吝指出。

转载于:https://www.cnblogs.com/idiv/p/10149562.html

你可能感兴趣的文章
关键字
查看>>
Pycharm安装Markdown插件
查看>>
上传图片并预览
查看>>
哈夫曼编码_静态库
查看>>
【转】redo与undo
查看>>
C#更新程序设计
查看>>
常用Request对象获取请求信息
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Shell命令-内置命令及其它之watch、date
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
第8章-方法
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Microsoft SQL Server Transact-SQL
查看>>
Font: a C++ class
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
Java四种引用包括强引用,软引用,弱引用,虚引用
查看>>
【NodeJS】http-server.cmd
查看>>
iOS bundle identifier 不一致,target general的Bundle Identifier后面总是有三条灰色的横线...
查看>>