…剩余运算符

const obj1 = {a: 1,b: 2
}
const obj2 = {a: 100,b: 2,c: 300
}
const obj = {...obj1,...obj2
}
console.log(obj) // 和Object.assign(obj, obj1, obj2)结果相同

[Symbol.hasInstance]

Symbol构造函数上的属性,默认调用了方法

iterator迭代器

  • 对数据结构读取的一种方式,是有序的,连续的,基于拉取的一种消耗数据的组织方式
const arr = [1, 2, 3]
const iterFn = arr[Symbol.iterator] // 方法
console.log(iterFn)
const iter = arr[Symbol.iterator]()
console.log(iter) // 对象
console.log(iter.next()) // 迭代结果
console.log(iter.next())
console.log(iter.next())
console.log(iter.next())
console.log(iter.next())

有序的数据类型

  • 数组
  • 类数组:arguments、nodeList、Map、Set、weakMap、weakSet
    在不知道数据长度情况下,无法用for循环进行遍历
  • 自定义迭代器
    // 这个写法不对?
const arr = [1, 2, 3]
function makeIterator(arr) {let index = 0return {next() {return {value: index < arr.length ? arr[index++] : undefined,done: index < arr.length ? false : true}}}
}
const iter = makeIterator(arr)
console.log(iter.next())
console.log(iter.next())
console.log(iter.next())
console.log(iter.next())

二进制数据

  • js中没有typeArray和typedArray
  • typeArray类型数组
const tArray = new Int8Array(8) // 8进制数据
console.log(tArray)

for…of遍历接口

  • 只要部署了iterator接口
let arr = [1, 2, 3]
for (let i of arr) {console.log(i) // 1 2 3
}
  • 注意for…in拿的是下标,用来遍历对象
  • for…of拿到值,用来迭代部署了iterator接口的数据类型
  • 对象是无序的、非连续的,是不可迭代的

为对象部署iterator

  • 可以用…展开
  • 或者用for of迭代

let obj = {start: [1, 3, 2, 4],end: [5, 7, 6],[Symbol.iterator]() {let index = 0,arr = [...this.start, ...this.end],len = arr.length;return {next() {if (index < len) {return {value: arr[index++],done: false}} else {return {value: undefined,done: true}}// 不能这么写,会少迭代一次// return {//     value: index < len ? arr[index++] : undefined,//     done: index < len ? false : true// }}}}
}
console.log(...obj) // 1 3 2 4 5 7 6
for (let val of obj) {console.log(val)
}
  • 使用iter.next()完成迭代后,再使用for of遍历,据说有可能会失败,这种场景遇到了再记录

注意事项

  • 最后一行为什么打印出空,因为在前面的代码中迭代已经完成了

ES6-11 Symbol、iterator、forOf、typeArray相关推荐

  1. SE API第10/11天:集合 ——>ArrayListals、Iterator遍历迭代器、增强for、List集→subList、集合间转换asList、排序sort | Map相关

    一.Java 集合框架 0.介绍: (0)什么是集合 -集合与数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便. (1)集合框架被设计成要满足以下几个目标: 该框架必须是高性能的. ...

  2. ES6 Symbol类型的应用、symbol属性名的遍历、Symbol.for()Symbol.keyFor()

    目录 Symbol类型 介绍 Symbol.prototype.description Symbol的应用 1 给对象内追加属性 2 消除魔术字符串 symbol属性名的遍历 Symbol.for() ...

  3. 浅谈 JavaScript、ECMAScript (ES5、ES6)是什么、相互关系

    一.ECMAScript 和 JavaScript 的关系 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. ES6 === ECMAScript6 ...

  4. JavaScript 中的 require / exports、import / export、浅谈JavaScript、ES5、ES6

    Node.js 的基础教学 之 exports 和 module.exports:https://zhuanlan.zhihu.com/p/82057593 浅谈 JavaScript.ES5.ES6 ...

  5. ES6基础语法(let、const、解构赋值、模板字符串、简化对象、箭头函数、扩展运算符)(一)

    系列文章目录 第二章:ES6深入(Symbol.类.迭代器.Set.Map)(二) 第三章:ES6深入(生成器.Promise.async/await)(三) 第四章:ES6+新增API拓展(对象AP ...

  6. ES6 (十三)Set 和 Map 数据结构、WeakSet 和 WeakMap、WeakRef、FinalizationRegistry

    ES6 (十三)Set 和 Map 数据结构.WeakSet 和 WeakMap.WeakRef.FinalizationRegistry 文章目录 ES6 (十三)Set 和 Map 数据结构.We ...

  7. H5新增、CSS3以及ES5、ES6新增特性

    1.H5新增 新增特性:语义化标签.音视频处理API.canvas.拖拽释放API.history API.地理位置API.webSocket.web存储的localStorage和SessionSt ...

  8. JavaSE——类集(上)(Collection、List、Iterator、forEach)

    第2节 集合(上) 因为已经有数据结构的基础,前面有关数据结构的知识就不单独整理了,直接上Java的集合类的知识. 一.类集(集合类) 1.1 集合概述 集合: 集合是java中提供的一种容器,可以用 ...

  9. 【Java 集合】ArrayList、LinkedList、Stack、Queue、Set、Map, 迭代器 Iterable、Iterator,Collections类

    集合类型 数组的局限性 ArrayList(常用方法 + 基本使用) ArrayList - retainAll ArrayList - toArray ArrayList 的遍历(5种) Array ...

  10. Java 集合 Collection、Iterator

    Java集合分为Set(无序.不可重复).List(有序.重复).Queue(队列)和Map(映射关系) Java集合概述 数组元素既可以是基本类型的值,也可以是对象(实际保存对象的引用变量) 集合只 ...

最新文章

  1. 赠书 | 读懂生成对抗神经网络 GAN,看这文就够了
  2. matlab命名文件保存在哪里,用Matlab给整个文件夹下的文件分别重命名
  3. DES加密解密与AES加密解密
  4. 系统命名与 SQL 命名之争 - 第 1 部分
  5. 空间站是如何绕地飞行的?张朝阳物理课开播啦
  6. sfc流程图怎么画_sfc第四次超级机器人大战流程图
  7. js常用内建对象之:String对象
  8. 李开复看衰语音识别 这些国内外巨头却有话要说!
  9. AIO 开始不定时的抛异常: java.io.IOException: 指定的网络名不再可用
  10. MYSQL 无重复插入数据更新语法 sql一句话使insert时若主键重复则更新
  11. wps忘保存关闭,数据恢复步骤
  12. 学习计算机基本知识,怎样按序学习计算机基本知识
  13. 2023面试官常考的前端面试题
  14. java中堆和堆栈的区别
  15. Python数据分析上机
  16. Qt运行提示QGtkStyle was unable to detect the current GTK+ theme.解决方法
  17. RHEL 7系统审计、系统日志文件、服务安全及打补丁 AIDE 系统入侵检测
  18. 数据压缩作业:H.264视频格式分析
  19. 安卓开发之屏蔽按键抖动,连击,长按事件
  20. CentOS双网卡双IP设置

热门文章

  1. html制作翻页效果代码,使用原生JS实现滚轮翻页效果的示例代码
  2. picturectrl控件中加载图片并显示_如何在EasyX窗体中显示图片
  3. python怎么创建一个二维数组_python 创建二维数组的方法
  4. 伪静态php配置,PHP开启伪静态配置
  5. 5.Lambert光照Diffuse Shader
  6. (五)Unity插件生成
  7. 从零认识单片机(9)
  8. Django 下添加左侧字段显示和搜索
  9. oracle-group by -having
  10. 2018.01.01(数字三角形,最长上升子序列等)