[es6]Symbol.iterator 和 for of
来源:互联网 发布:供应商考核表数据 编辑:程序博客网 时间:2024/06/05 01:02
Symbol.iterator 和 for of 是es6的新特性 可以为对象设置 自己的迭代器
首先介绍我们的for of
var arr = [1,2,3,8,33] for (var i of arr){ console.log(i)}123833
就是这么简单
这里呢其实访问了 arr的迭代器调用next的方法的返回值中的value属性 (不知道我在说什么?继续往下看)
然后就是 Symbol.iterator
var arr = [4,5,6,7,8]; var v = arr[Symbol.iterator](); console.log( v.next() ); console.log( v.next() ); console.log( v.next() ); console.log( v.next() ); console.log( v.next() ); console.log( v.next() ); console.log( v.next() );
echo
Object {value: 4, done: false}Object {value: 5, done: false}Object {value: 6, done: false}Object {value: 7, done: false}Object {value: 8, done: false} //注意这次的done 是 falseObject {value: undefined, done: true}Object {value: undefined, done: true} //完成以后再次执行也是true
然而object 是不支持迭代器的,于是我们DIY一个:)
var obj ={ name:1, age:13, home:"xxxx" } Object.defineProperty(obj,Symbol.iterator,{ enumerable:false, //是否可枚举 writerable:false, //是否可写 configurable:true, //是否删除 value:function(){ var that = this; var nowindex = 0; var key = Object.keys(that); return { next:function(){ var h = { value:that[key[nowindex]], done:(nowindex+1 >key.length ) } nowindex++; return h } } } }) var i = obj[Symbol.iterator](); console.log( i.next() ); // {value: 1, done: false} console.log( i.next() ); // {value: 13, done: false} console.log( i.next() ); // {value: "xxxx", done: false} console.log( i.next() ); // {value: undefined, done: true}
done!
等等 i.next()重复了好多次,这样写也太sb了:( 我好像想到了刚刚学的 for of 让我们来试试
for (var y of obj){ console.log(y) } echo 1 13 xxxx
这样就漂亮多了
感谢这些文章:
《你不知道的javascript 上卷》
mdn-Symbol.iterator
0 0
- [es6]Symbol.iterator 和 for of
- 【es6】Iterator 和 for...of
- ES6--Iterator和for...of循环
- es6 iterator和for...of循环
- ES6 -- 遍历器Iterator和for...of
- ES6 —(Iterator 和 for...of)
- ES6--iterator和for-of循环
- ES6之Iterator和for...of
- es6的iterator和for of循环
- ES6入门——Iterator和for...of循环
- ES6学习笔记(七)Iterator和for...of循环
- 自学-ES6篇-Iterator和for...of循环
- es6 javascript的Iterator 和 for...of 循环
- ES6学习笔记之Iterator和for...of循环
- ES6(二) Iterator(遍历器)和for-of循环
- 5、Iterator和for...of循环—ES6学习笔记
- ES6系列之---Iterator和for...of循环
- ES6-Iterator与for..of..遍历
- 关于self点操作访问和下划线访问的区别
- android 编译共享ccache的缓存
- sqlserver 分组合并
- 树莓派上手实战之配置Samba服务器
- NYOJ_72 Financial Management
- [es6]Symbol.iterator 和 for of
- 面试问题
- oracle sql分组合并
- hdu 5372 Segment Game
- 学习iOS看的资源总结
- IPC通信方式
- CCF题目:门禁系统
- UTF-8 CPP的使用
- Maven3 实践