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

本文详细介绍了ES6中的Symbol数据类型,包括其两种创建方式、注意事项、不同数据类型的区分以及与对象属性的关系。此外,还探讨了迭代器和生成器在异步编程中的应用,展示了如何自定义遍历和使用yield操作。
摘要由CSDN通过智能技术生成

在这里插入图片描述

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
  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值