08-Symbol.iterator迭代器

本文介绍了迭代器的概念,包括迭代协议、迭代器和迭代对象。详细讲解了Symbol.iterator的作用,它是如何为对象定义默认迭代器,并通过示例说明了在Array和Object类型中的应用。还提供了采用Symbol.iterator实现Object类型迭代的模板和步骤。
摘要由CSDN通过智能技术生成

1. 迭代器

  • 迭代协议:规定了迭代与实现的逻辑
  • 迭代器:具体的迭代实现逻辑
  • 迭代对象:可被迭代的对象 - 实现了[Symbol.iterator]方法
  • 迭代语句
    for…in:以原始插入的顺序迭代对象的可枚举属性
    for…of:根据迭代对象的迭代器具体实现迭代对象数据

2. 迭代器的实现原理 - Symbol.iterator

  Symbol.iterator 为每一个对象定义了默认的迭代器。该迭代器可以被 for…of 循环使用。
  当需要对一个对象进行迭代时(比如开始用于一个for…of循环中),它的@@iterator方法都会在不传参情况下被调用,返回的迭代器用于获取要迭代的值。
  如Array类型:

let array = ["a", "b", "c", "d"];
for (value of array) {
   
    console.log(value);
}
>a
>b
>c
>d

  而Object类型则没有:

let objs = {
   
    a: 1,
    b: 2,
    c: 3
};
for (obj of objs) {
   
    console.log(obj);
}
>[报错]:Uncaught TypeError: objs is not iterable at ...

3. 采用Symbol.iterator实现某个类型的迭代的模板

obj[Symbol.iterator] = function () {
   
    return {
   
        next() {
   
            return {
   
                done
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值