HTML5技术

es6笔记5^_^set、map、iterator - webNick(4)

字号+ 作者:H5之家 来源:H5之家 2017-01-20 14:00 我要评论( )

let myIterable = {};myIterable[Symbol.iterator] = function * () {yield 1 ;yield 2 ;yield 3 ;};console.log(myIterable);console.log([...myIterable]); let obj = { * [Symbol.iterator]() {yield 'hello' ;y

let myIterable = {}; myIterable[Symbol.iterator] = function* () { yield 1; yield 2; yield 3; }; console.log(myIterable); console.log([...myIterable]); let obj = { * [Symbol.iterator]() { yield 'hello'; yield 'world'; } }; for (let x of obj) { console.log(x);// hello world } //上面代码中,Symbol.iterator方法几乎不用部署任何代码,只要用yield命令给出每一步的返回值即可。

遍历器的return(),throw() 遍历器返回的指针对象除了具有next方法,还可以具有return方法和throw方法。其中,next方法是必须部署的,return方法和throw方法是否部署是可选的。
return方法的使用场合是,如果for...of循环提前退出(通常是因为出错,或者有break语句或continue语句),就会调用return方法。
如果一个对象在完成遍历前,需要清理或释放资源,就可以部署return方法。
throw方法主要是配合Generator函数使用,一般的遍历器用不到这个方法。
七、for...of循环   迭代器对象允许像 CLI IEnumerable 或者 Java Iterable 一样自定义迭代器。
  将for..in转换为自定义的基于迭代器的形如for..of的迭代,不需要实现一个数组,支持像 LINQ 一样的惰性设计模式。

let fibonacci = { [Symbol.iterator]() { let pre = 0, cur = 1; return { next() { [pre, cur] = [cur, pre + cur]; return { done: false, value: cur } } } } } console.log(fibonacci); for (let n of fibonacci) { (n > 1000){ break; } console.log(n); }

 此篇终,待续……










 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • es6笔记4^_^function - webNick

    es6笔记4^_^function - webNick

    2017-01-19 14:00

  • es6笔记3^_^object - webNick

    es6笔记3^_^object - webNick

    2017-01-18 11:00

  • es6笔记2^_^array - webNick

    es6笔记2^_^array - webNick

    2017-01-16 13:01

  • 读书笔记:《HTML5开发手册》Web表单 - 绿岛之北

    读书笔记:《HTML5开发手册》Web表单 - 绿岛之北

    2017-01-14 15:04

网友点评