在 ES6 中提供了 for-of,可以很方便的遍历数组和类数组,但是却不能遍历对象,这是为什么,与 for-in 仅仅相差一个单词,用途也是遍历,为什么却不能使用在对象上?

查资料后得知,原来 ES6 中引入了 Iterator,只有提供了 Iterator 接口的数据类型才可以使用 for-of 来循环遍历,而 ArraySetMap、某些类数组如 arguments 等数据类型都默认提供了 Iterator 接口,所以它们可以使用 for-of 来进行遍历

那么原因清楚了,该怎么解决呢?能不能为对象已经其它的一些数据类型提供 Iterator 接口呢

答案是可以的,ES6 同时提供了 Symbol.iterator 属性,只要一个数据结构有这个属性,就会被视为有 Iterator 接口,接着就是如何实现这个接口了,如下就是一个最简实现:

newObj[Symbol.iterator] = function(){
let index = 0
, self = this
, keys = Object.keys( self )
; return {
next(){
if( index < keys.length ){
return {
value: self[keys[index++]]
, done: false
};
}
else{
return {
value: undefined
, done: true
}
}
}
};
};

最新文章

  1. 集合(set)-Python3
  2. Python-Mac 安装 PyQt4
  3. Enterprise Solution 2.3
  4. Java Servlet完全教程
  5. JAVA基础学习day26--正则表达式
  6. 13Spring_AOP编程(AspectJ)_后置通知
  7. JS 验证一组input框是否为空的方法
  8. nginx http跳转到https
  9. Closures in OOC
  10. shell脚本if语句的多种条件参数
  11. VS2012统计代码量
  12. (转)Mysql哪些字段适合建立索引
  13. Android : App客户端与后台服务的AIDL通信以及后台服务的JNI接口实现
  14. oracle-用户和表空间创建
  15. 如何用JQuery实现单元格 循环变背景色
  16. layui之select的option叠加问题解决
  17. Notes of Daily Scrum Meeting(11.11)
  18. Android N 通知概览及example
  19. http://www.kankanews.com/ICkengine/archives/18078.shtml
  20. Properties Editor 中文编辑器 汉化

热门文章

  1. 图计算引擎分析——Gemini
  2. 2022年7月15日,第四组,周鹏,JAVA认识的第三天,算法的第一天(╥╯^╰╥)(╥╯^╰╥)
  3. GIS数据下载合集:遥感、土壤、气象、行政区数据...
  4. 过年必备!亲戚计算器「GitHub 热点速览 v.23.02」
  5. NG-ZORRO + angular-cli11 表格横纵向单元格合并,按需设置背景色,解决动态合并单元格动态colspan情况下,nzLeft固定列失效问题,也适用VUE,REACT
  6. vue学习笔记(一) ---- vue指令(过滤器)
  7. 支付对接常用的加密方式介绍以及java代码实现
  8. R数据分析:孟德尔随机化中介的原理和实操
  9. 图书管理员(NOIP 2017 PJT2)
  10. 解决centos7 yum和wget都不能使用