let hobby = Symbol('hobby')
let object = {id: 1,name: 'tom',age: 20,[hobby]: [1, 2, 3],[Symbol()]: ['1', '2', '3'],[Symbol()]: ['5', '4', '6'],
}// 给Object原型对象部署Symbol.iterator属性,使对象也可以使用for-of
Object.prototype[Symbol.iterator] = function () {// 获得所有对象的属性集合keys,keys每个元素都是object的属性名称,this是当前函数的调用者let keys = Reflect.ownKeys(this)// keys数组的下标let index = 0let _this = thisreturn {next() {return {value: _this[keys[index++]],//{ key: keys[index], value: _this[keys[index++]] }done: index > keys.length,}},}
}
for (let it of object) {console.log(it)
}输出的结果:
1
tom
20
[1, 2, 3]
['1', '2', '3']
['5', '4', '6']

ES6给对象部署Iterator相关推荐

  1. es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器

    文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...

  2. 【ES6】对象的拓展

    [ES6]对象的拓展 一.对象的两种表示法[掌握] 1)简洁表示法 2)属性名表达式法 二.Object.is()[了解] 三.Object.assign()[了解] 查看更多ES6教学文章: 参考文 ...

  3. ES6中的迭代器(Iterator)和生成器(Generator)

    用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简化数据操作 ...

  4. 深入解析ES6中的迭代器(Iterator)和生成器(Generator)

    用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简化数据操作 ...

  5. java iterator对象_JAVA Iterator 详解 代码

    Iterator接口 1.所有实现了Collection接口的容器类都有一个Iterator方法用以返回一个实现了Iterator接口的对象 2.Iterator对象称为迭代器,用以方便的操作实现对象 ...

  6. 第九节:ES6为对象做了哪些扩展?

    ES6不仅为字符串.数值和数组带来了扩展,也为对象带来了很多新特性.这一节,我们来一起学习一下对象的扩展. 对象的传统表示法 我们回顾一下,对象的传统表示法: let person = { " ...

  7. es6 Atomics对象

    Atomics对象 多线程共享内存,最大的问题就是如何防止两个线程同时修改某个地址,或者说,当一个线程修改共享内存以后,必须有一个机制让其他线程同步.SharedArrayBuffer API 提供A ...

  8. es6 ArrayBuffer对象

    ArrayBuffer对象 概述 ES6 ArrayBuffer对象代表储存二进制数据的一段内存,它不能直接读写,只能通过视图(TypedArray视图和DataView视图)来读写,视图的作用是以指 ...

  9. es6 对象中是否有键值_js/es6判断对象是否为空,并判断对象是否包含某个属性...

    js判断对象为空以及有好几种方法了,但是个人觉得不是特别方便. 比如: 1.把对象通过 JSON.stringify 转为字符串,再判断字符串是否等于 " {} " 2.for i ...

最新文章

  1. jenkins+sonarqube流水线脚本模板
  2. Python 技术篇-用imageio库实现图片转gif动画,Gif录制屏幕操作实例演示
  3. Redis中7种集合类型应用场景
  4. bzoj4788: [CERC2016]Bipartite Blanket
  5. SpringMVC的请求-获得请求参数-获得集合类型参数2
  6. BGP小实验——选路不困难,只要有方法
  7. 金士顿u盘真假软件_简洁轻巧 金士顿DT80 Type-C高速闪存盘评测
  8. mysql 导入百万级数据 几种 java_百万级数据,如何迁移到MySQL?
  9. 第一篇博客 记录自己对spring bean的理解
  10. 51单片机实现蜂鸣器播放天空之城
  11. Excel数据分析--客户对象分析
  12. Python学习路线(课程大纲+Python视频教程+下载地址)
  13. 高德纳(Donald Knuth)语录
  14. Cocos2dx 3.2 横版过关游戏Brave学习笔记(一)
  15. 家用游戏机主机的发展历史
  16. 国产肠胃养护猫粮还可以
  17. 无服务计算的未来和挑战: A Berkeley View on Serverless Computing
  18. 计算机科学与技术专业就业方向及前景如何?
  19. 淘宝默认好评加分吗?分几种情况?
  20. 计算机中遇到的问题英语,电脑故障英语对话

热门文章

  1. LoRa信道争抢怎么办?传说中的冲突退避管用吗?
  2. java 当前时间加12小时_Java设置时间的24或12小时机制
  3. dya6小数据池、集合、编码、深浅copy
  4. 数学知识补充(一)度量空间
  5. 临床试验中edc录入_使用电子数据采集(EDC)系统进行医疗器械临床试验研究
  6. 微信获取scheme码提示invalid weapp pagepath rid: 6397ef44-0f537d77-76155114
  7. Keep It for Mac(专业笔记工具)
  8. 自测过程,开发要有足够细心和敏感度
  9. 【Win】查看Bing壁纸每天更新的图片
  10. 深眸分享——机器视觉光源基础知识