迭代器
es6新增的特性,之前没有,其语法借鉴了Python、 Java、 C++。
实现了迭代器接口的类,都可以使用next方法来取元素。
比如:字符串、数组、映射、集合(Set、Map)、arguments 对象、NodeList 等 DOM 集合类型。
表现
const set = new Set(); set.add('共'); set.add('产'); set.add('党'); const setGen = set[Symbol.iterator](); // 取出迭代器:[Symbol.iterator]创建迭代器的工厂函数 const {done,value:fisrstEl} = setGen.next(); // 调用next取出第一个元素 let hasNext = !done; // 判断有没有元素标识 hasNext && console.log(fisrstEl, hasNext); while(hasNext){ const {done, value} = setGen.next(); hasNext = !done; hasNext && console.log(value, hasNext); }
由上可以推断出:检查是否可以迭代 只需要判断是否存在默认迭代器属性的工厂函数[Symbol.iterator]即可知道
let num = 1; let obj = {}; let str = 'abc'; // 这两种类型没有实现迭代器工厂函数 console.log(num[Symbol.iterator]); // undefined console.log(obj[Symbol.iterator]); // undefined // 这些类型都实现了迭代器工厂函数 console.log(str[Symbol.iterator]); // f values() { [native code] }
自己实现一个迭代器
新消息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。