使对象具有ES6中Iterator接口的实现方法
Posted angeliaxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使对象具有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接口的实现方法的主要内容,如果未能解决你的问题,请参考以下文章