使对象具有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 }
转载于:https://www.cnblogs.com/AngliaXu/p/7337064.html
使对象具有ES6中Iterator接口的实现方法相关推荐
- 初步解读Golang中的接口相关编写方法
初步解读Golang中的接口相关编写方法 概述如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口 ...
- sklearn中FastICA接口的使用方法
sklearn中FastICA接口的使用方法 ICA算法的数学原理 FastICA算法的实现过程及其python实现 sklearn中FastICA接口的使用方法 完整代码 ICA算法的数学原理 参考 ...
- es6 调用 Iterator 接口的场合
调用 Iterator 接口的场合 有一些场合会默认调用 Iterator接口(即Symbol.iterator方法),除了下文会介绍的for...of循环,还有几个别的场合. (1)解构赋值 对数组 ...
- ES5和ES6中对于继承的实现方法
在ES5继承的实现非常有趣的,由于没有传统面向对象类的概念,Javascript利用原型链的特性来实现继承,这其中有很多的属性指向和需要注意的地方. 原型链的特点和实现已经在之前的一篇整理说过了,就是 ...
- es6中的静态属性和方法
es6 中 class 带static 关键字是静态方法 静态方法和对象无关,外部对象变量不能调用静态方法和属性 外部可以通过类名来调用 对象原型(就是类下面的方法)方法没有办法调用对象上面的静态方法 ...
- ES6中的Promis的使用方法
什么是Promise? Promise是由 CommonJS 在 Promises/A 规范中提出来的,是js一部编程的重要概念,是比较就行的javascript一部变成解决方案之一. 常见的异步编程 ...
- es6 Symbol iterator接口
Symbol定义:一种新的原始数据类型,表示独一无二的值,是一种类似字符串的数据类型 特点: 值是唯一的,用来解决命名冲突的问题 值不能与其他数据进行运算 注意点 Symbol 值作为属性名时,该属性 ...
- Java接口有时有结果 有时没有_《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法...
由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的 ...
- 为什么Java中有些接口没有任何方法
面试题 不能用来修饰interface的有() A. private B.public C.protected D.st ...
最新文章
- java的this_java的this是什么意思
- python中mat函数_python matplotlib中的subplot函数使用详解
- pytorch如何计算导数_Pytorch的自动求导机制与使用方法(一)
- [渝粤教育] 山东第一医科大学 健康教育与健康促进 参考 资料
- linux gcc 制作动态库
- 重新学.Net[一]——.Net的组成
- Flask 第三方组件之 SQLAlchemy
- 机器学习回归算法—性能评估欠拟合与过拟合
- 最新版本elasticsearch本地搭建入门篇
- python学了真的很有用吗-学习Python真的有必要参加培训吗?老男孩Python学习机构...
- mysql select trim_mysql trim函数用法举例
- 注册测绘师20180301-测绘基准
- android 头像修改
- ipd敏捷开发_融入华为IPD软件开发流程与敏捷开发实施java课程设计
- 08_星仔带你学Java之什么是软件开发以及软件开发方式有哪些?
- SRE Google运维解密——第二章Goolgle的生成环境介绍
- 企业微信机器人脚本python_Python实现企业微信机器人每天定时发消息实例
- 短信系统实现原理(基于redis)
- 大学冷知识「高校的学生也有专属昵称」
- Mysql有四种事务隔离级别,详解脏读、不可重复读、幻读
热门文章
- BZOJ 2333 【SCOI2011】 棘手的操作
- Extjs4.0 开发笔记-desktop开始菜单动态生成方法
- 外媒列举2011年十大IT预测:鲍尔默卸任微软CEO
- Oracle数据库----函数
- BZOJ 1009: [HNOI2008]GT考试(kmp+dp+矩阵优化)
- GDOI2017第二轮模拟day1 总结
- JSP中文乱码问题终极解决方案(转)
- windows多线程同步--临界区
- mysql知识总结体会博客_可能是全网最好的MySQL重要知识点/面试题总结||CSDN博客精选...
- 机器视觉-EasyDL商品检测-标准版-Demo