zoukankan      html  css  js  c++  java
  • 迭代器Iterator

            // 我的需求是遍历出data中的persons数据,这个时候可以考虑迭代器
            // 迭代器原理:
            // (1)创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。
            // (2)第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员。
            // (3)第二次调用指针对象的next方法,指针就指向数据结构的第二个成员。
            // (4)不断调用指针对象的next方法,直到它指向数据结构的结束位置。
            const data = {
                name: '应用',
                persons: [
                    'UZI',
                    'MLXG',
                    'XIAOMING',
                    'LETME',
                    'XIAOHU'
                ],
                [Symbol.iterator]() {
                    //原理1:创建一个指针对象
                    let index = 0;
                    return {
                        //对象中存在next方法
                        next: () => {// ()=>箭头函数保证this指向的是data
                            //不断调用next方法,直到结束
                            if (index < this.persons.length) {
                                const result = { value: this.persons[index], done: false };
                                index++;
                                return result;
                            } else {
                                return { value: undefined, done: true }
                            }
                        }
                    }
                }
            }
            //完成了data [Symbol.iterator]方法的定义之后重新遍历,即实现最初的需求
            for (let i of data) {
                console.log(i);// UZI MLXG XIAOMING LETME XIAOHU
            }

    关于 Symbol :https://www.runoob.com/w3cnote/es6-symbol.html

    ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。

    ES6 数据类型除了 Number 、 String 、 Boolean 、 Object、 null 和 undefined ,还新增了 Symbol 。

  • 相关阅读:
    Git 简介
    Web开发——jQuery基础
    VueJS教程4
    VueJS教程3
    VueJS教程2
    linux命令,系统安全相关命令--改变文件属性与权限(chgrp,chwon,chmod)
    linux命令,系统安全相关命令--su
    linux命令,系统安全相关命令--passwd
    git常用命令整理
    vi常用按键
  • 原文地址:https://www.cnblogs.com/zhh-blogs/p/15556737.html
Copyright © 2011-2022 走看看