首页 > 代码库 > 使对象具有ES6中Iterator接口的实现方法
使对象具有ES6中Iterator接口的实现方法
es6中只有具有iterator接口的数组或者类数组(arguments)都可以使用for of来循环,但是对于对象来说不行,可以利用
迭代器中的原理来给对象生成一个迭代器,实现让对象可以使用for of
1 var j={
2 name:‘小红‘,
3 age:18
4 }
5 //给j对象添加一个iterator接口
6 j[Symbol.iterator]=function(){
7 //使用object.keys()方法把j对象中的k值读取出来存在数组当中
8 var arr=Object.keys(j);
9 var i=0;
10 return {
11 //ES6中next()迭代方法,自动迭代
12 next(){
13 if(i<arr.length){
14 //如果done为false,继续迭代
15 return {
16 //返回迭代的最后结果,如果是一个对象,那么for of的时候需要用解构
17 value:{
18 k:arr[i],
19 val:j[arr[i++]]
20 },
21 done:false
22 }
23 }else{
24 //如果done为true,继续迭代
25 return{
26 value:null,
27 done:true
28 }
29 }
30 }
31 }
32 }
33 //解构获取返回得到的对象,输出k值,val值
34 for(var {k,val} of j){
35 console.log(k,val);
36 }
使对象具有ES6中Iterator接口的实现方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。