ES6 rest参数,扩展运算符,Symbol数据类型,迭代器和生成器 【详解加案例 】(二)

arguments和rest参数,得到的结果不同,前者是对象,后者是数组。

见下图结果:

在这里插入图片描述

注意:

rest参数必须要放到参数最后。

在这里插入图片描述

2. ES6 扩展运算符

==========================================================================

2.1 ES6 简介


[ … ] 扩展运算符能将数组转换为逗号分隔的参数序列。

扩展运算法和rest参数,不一样,扩展运算符常用的就是将一个数组内容,有顺序的传入到一个函数方法中。

2.2 应用


1. 数组合并

2. 数组克隆

3. 将伪数组转化为真正的数组

Document

在这里插入图片描述

3. ES6 Symbol 数据类型

================================================================================

在ES6中,Symbol表示独一无二的值,也是ES6推出的第七种数据类型。Symbol和字符串不同!

3.1 Symbol两种创建方式


1. 直接Symbol() 来创建Symbol对象。这是通过调用函数来创建Symbol对象。

这里的两个张三是不同的!

2. 使用Symbol.for方法来创建Symbol对象。和上面不同这是通过函数对象来创建Symbol。

而使用Symbol.for创建的相同值,是一样的!!

3.2 Symbol注意事项 7个数据类型


注意:

Symbol定义的变量不能与其他数据进行运算。

7个数据类型:

记忆小技巧:

USONB (you are so niubility)

**u : undefined

s : String Symbol

o : Object

n : null number

b : boolean**

3.3 给对象,添加Symbol的两种属性


方式一:

向对象中添加另一个对象的属性值为Symbol的方法。

方式二:

直接使用[]添加Symbol的对象属性。

4. Symbol 内置属性

============================================================================

4.1 hasInstance 与 instanceof


instanceof的用途是判断一个对象是否在某个对象原型链上。或者说判断一个对象是某个对象的实例。

当其他对象使用instanceof运算符,判断是否为对象的实例时,会调用这个方法。

例如:

4.2 isConcatSpreadable 与 concat


对象的Symbol.isConcatSpreadable属性等于的是一个布尔值,表示该对象用于concat(Array.prototype.concat())时,是否展开。

4.3 其他Symbol的内置属性


在这里插入图片描述

在这里插入图片描述

这些属性都是Symbol的内置属性,而他们的整体来作为对象的属性去设置,来改变对象在特定场景下面的表现。

5. 迭代器

====================================================================

迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。 任何数据结构只要部署了Iterator接口,就可以完成遍历操作。

在ES6中,一个新的遍历命令for … of循环,iterator接口主要供for … of 来使用。

以下的数据都可以使用for … of :

在这里插入图片描述

注意:

**for in 遍历的是键名。

for of 遍历的是键值。**

可以自己打印一下,查看Iterator的接口:

在这里插入图片描述

在这里插入图片描述

Iterator (迭代器)的工作原理:

在这里插入图片描述

关键是看next指针,我们可以打印第一个next指针看看。

在这里插入图片描述

6. 迭代器自定义遍历对象

===========================================================================

通过使用迭代器自定义遍历数据,自定义就是按照自己的想法来遍历对象或者对象内的数据。

例如:

Document

7. ES6 生成器(异步编程)

==============================================================================

7.1 生成器 简介


生成器其实就是一个特殊的函数,主要作用就是异步编程。

生成器,加上“ * ” 号。

调用next()方法来打印下面案例:

7.2 生成器 yield


yield可以算作是函数代码的分隔符。

也可以打印i.next()方法,来查看对象value和done的值。如下:

7.3 生成器函数参数


生成器的参数大体分为两种,正常的携带参数 和 next方法传入实参。

Document

7.4 生成器的使用


使用生成器来依次那个调用相应函数的案例,来表现异步编程思想。

案例一:简单的异步

Document
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值