ES6——给对象部署Iterator接口

2023-05-16

Iterator接口的目的就是为所有数据结构提供一种统一访问的机制,用for...of实现。

一个数据结构只要有Symbol.iterator属性,就可以认为是“可遍历的”

原型部署了Iterator接口的数据结构有三种,具体包含四种,分别是数组类似数组的对象Set和Map结构

为什么对象(Object)没有部署Iterator接口呢?

有两个原因:一是因为对象的哪个属性先遍历,哪个属性后遍历是不确定的,需要开发者手动指定。然而遍历遍历器是一种线性处理,对于非线性的数据结构,部署遍历器接口,就等于要部署一种线性转换。二是对对象部署Iterator接口并不是很必要,因为Map弥补了它的缺陷,又正好有Iteraotr接口。

然后就会有人问了,既然有Map了,为什么还要尝试给对象部署Iterator接口呢?

答案很多啊,指不定哪天面试官就问了呢?指不定哪天你脑抽想用for...of来遍历对象了呢?又或者是遇到死板的不愿意兼容ES6规则的那个啥呢?就四这么任性!

//创建一个构造函数
function Obj(value){
	this.value=value;
	this.nnext=null;
}
Obj.prototype[Symbol.iterator]=function(){
	var iterator={next:next};
	var current=this;
	function next(){
		if(current){
			var value=current.value;
			var done=current.next===null;
			current=current.next;
			return {
				value:value,
				done:done
			};
		}else{
			return {done:true};
		}
	}
	return iterator;
}

测试:


这里需要说明的是,上面例子中的对象完整表示为{one:1,teo:2,three:3}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6——给对象部署Iterator接口 的相关文章

  • sphinx文档生成脚手架工具安装和使用

    1 sphinx的安装与使用 1 1 安装sphinx sphinx官方安装说明 xff1a Installing Sphinx Sphinx documentation readthedoc官方说明 xff1a Getting Start
  • geth客户端安装

    geth是以太坊的官方客户端 xff0c 它是一个命令行工具 xff0c 提供很多命令和选项 xff0c 可以运行以太坊节点 创建和管理账户 发送交易 挖矿 部署智能合约等 下面介绍geth的三种安装方法 xff1a 直接下载可执行文件 在
  • win系统下,利用goland来build生成geth.exe可执行文件

    golang环境搭建 具体安装方法就不再赘述 xff0c 但是以太坊对golang的版本有要求 xff0c 得1 7及以上 xff0c 推荐1 9 3 go ethereum代码下载 可以直接访问https github com ether
  • 删除容器命令

    删除容器使用 docker rm 命令 1 删除容器 1 首先需要停止所有的容器 docker stop docker ps a q 2 删除所有的容器 只删除单个时把后面的变量改为container id即可 docker rm dock
  • 正则 (?:)

    X 在正 则中表示所匹配的子组X不作为结果输出 正常情况 X 中的X会被作为新增的一个组序号输出 xff0c 比如 A B xff0c A的序号1 B的序号2 如果 A B xff0c A将没有序号不输出 B的序号为1 规范化url xff
  • 用maven-replacer插件选择正则表达式替换

    在前端html或者jsp中会引入一些诸如css js等静态资源 xff0c 但是有时候浏览器会有缓存 xff0c 更新js后 xff0c 返现一些用户看到的仍然是旧的 xff0c 说明没有生效 这样的话一般是在引入静态资源的时候添加时间戳
  • 【LeetCode股票买卖系列:123. 买卖股票的最佳时机 III 暴力递归=>记忆化搜索=>动态规划】

    x1f680 算法题 x1f680 x1f332 算法刷题专栏 面试必备算法 面试高频算法 x1f340 x1f332 越难的东西 越要努力坚持 xff0c 因为它具有很高的价值 xff0c 算法就是这样 x1f332 作者简介 xff1a
  • [模版]线段树

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 判断是否属于同一子网

    include lt bits stdc 43 43 h gt using namespace std int main char a 10 b1 10 b2 10 while scanf 34 s s s 34 a b1 b2 61 EO
  • 单点登录之cas6.5安装部署

    目录 一 准备工作二 安装 jdk11三 安装gradle三 安装tomcat四 下载cas并编译五 部署六 访问 一 准备工作 需要的包 xff1a jdk11 tomcat9 GRADLE7 2 cas overlay template
  • 单点登录之cas集成禅道

    目录 一 前言二 添加应用 xff0c 开启免密登录三 请求格式 一 前言 禅道11 5 1版本开始 xff0c 增加了第三方应用免密登录禅道的功能 xff0c 可以利用此功能实现单点登录 二 添加应用 xff0c 开启免密登录 三 请求格
  • Oracle ora-12514报错解决方法

    目录 一 问题描述二 解决方法 一 问题描述 Oracle 报错 ora 12514 二 解决方法 修改 tnsnames ora xff0c 一般在 D oracle product 10 2 0 client 1 NETWORK ADM
  • “你需要来自XXX的权限才能对此文件夹进行更改”的解决方法

    目录 一 问题描述二 解决方法1 方法1 xff1a 鼠标右键文件夹 xff0c 选择 属性 gt 安全 选项卡 xff0c 对用户进行授权2 方法2 xff1a 选择 高级 xff0c 更改所有者 xff0c 并添加至权限条目3 方法3
  • windows10获取超级管理员权限

    目录 一 新建文本文件 xff0c 命名为带 reg后缀的文件 xff0c 添加以下内容二 鼠标双击运行三 鼠标右键要获取权限的文件夹 xff0c 选择 获取超级管理员权限 一 新建文本文件 xff0c 命名为带 reg后缀的文件 xff0
  • python2.7安装

    目录 一 下载二 安装三 设置环境变量四 验证 一 下载 1 通过 python 官网 https www python org 找到 2 7 版本进行下载 xff1a https www python org downloads rele
  • sharding报错no table route info

    目录 一 问题描述二 解决方法 一 问题描述 集成 sharding 执行数据库操作报错 xff1a no table route info 二 解决方法 一般为分库分表策略配置错误 xff0c 请检查 application yml 文件
  • Nginx配置http跳转https

    目录 一 return 301二 rewrite三 497 状态码四 meta 刷新 Nginx 可通过多种方式实现 http 跳转 https xff0c 以下列出各种方式的实现方法 一 return 301 这是 Nginx 新版本的写
  • OpenFlow网络、OpenFlow交换机及OpenFlow协议的知识总结

    目录 OpenFlow起源与发展 OpenFlow网络 1 OpenFlow交换机 xff1a 2 FlowVisor xff1a 3 Controller xff1a OpenFlow交换机 分类 安全通道 流表 OpenFlow协议 x
  • 【高效运维】Jenkins之uni-app自动化部署

    目录 一 前言二 使用 Pipeline 创建任务1 创建一个流水线任务2 配置流水线 xff08 1 xff09 配置构建触发器 xff08 2 xff09 配置流水线 xff08 Pipeline script from SCM xff
  • Windows下安装Redis7.0.8

    目录 一 下载二 解压三 启动服务四 客户端连接测试五 把 redis 安装到服务1 安装2 启动服务3 停止服务4 卸载服务 一 下载 官网上没有 windows 版本的 redis 下载 xff0c 需要到 github 下载 xff1

随机推荐

  • 若依微服务版之集成Mybatis-Plus和Lombok

    目录 一 修改根目录 pom xml二 修改 ruoyi common core 的 pom xml三 去掉 nacos 配置文件中的 mybatis 配置 xff0c 添加 mybatis plus 配置四 添加配置类并注入五 注入类六
  • Windows下安装JDK

    目录 一 下载二 安装三 设置环境变量1 新增环境变量 JAVA HOME2 新增环境变量 CLASS PATH3 环境变量 PATH 添加变量值 四 验证 一 下载 下载链接 xff1a https www oracle com java
  • CentOS7下安装superset

    目录 一 前言二 安装 Miniconda1 下载2 安装3 加载环境变量配置文件4 取消激活 base 环境 三 创建 Python3 9 环境1 配置 conda 国内镜像2 创建 superset 环境并指定 Python3 93 激
  • Java--a++与 ++a 与 a=a+1 与a+=1

    a 43 43 等效 a 61 a 43 1 43 43 a 等效 a 43 61 1 计算顺序的区别 xff1a a 43 43 是先参加程序的运行再 43 1 xff0c 而 43 43 a则是先 43 1再参加程序的运行 举例 xff
  • 数据仓库系列文章二:浅谈企业数据仓库总线矩阵

    Kinball在 数据仓库工具箱 一书中 xff0c 详细阐述维度建模思想 xff0c 并给出维度建模的众多实践 维度建模的核心内容和建设过程在实践中已经被大家所熟知 xff0c 网上教程也很多 xff0c 本文不做赘述 本文重点谈一谈企业
  • Java中 List、Set、Map 之间的区别

    小博此篇记录了开发过程中常用的几种集合详解 xff0c 三者的区别对比均从IDEA相关层次图里面所得知 xff0c 基于JDK8 xff0c 如有错误欢迎批评指正 List 列表 List的元素以线性方式存储 xff0c 可以存放重复对象
  • DuiLib介绍及其消息处理剖析

    DirectUI技术 DirectUI意为直接在父窗口上绘图 Paint on parent dc directly 即子窗口不以窗口句柄的形式创建 windowless xff0c 只是逻辑上的窗口 xff0c 绘制在父窗口之上 微软的
  • xargs命令

    原作者地址 xff1a https www cnblogs com chyingp p linux command xargs html 感谢原作者 Linux基础 xff1a xargs命令 简介 xargs可以将输入内容 xff08 通
  • 为何HBase速度很快?

    为何HBase速度很快 xff1f HBase能提供实时计算服务主要原因是由其架构和底层的数据结构决定的 xff0c 即由LSM Tree Log Structured Merge Tree 43 HTable region分区 43 Ca
  • VirtualBox虚拟机不能ping通宿主机的解决方法

    解决VirtualBox虚拟机不能ping通宿主机的问题 问题描述 在VirtualBox虚拟中 xff0c 无法ping通宿主机 xff0c 宿主机可以ping通虚拟机 虚拟机的网络已经设置为 桥接网卡 xff0c 也可以正常上网 问题原
  • CMake 使用方法 & CMakeList.txt

    cmake 简介 CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 43 43 特性 类似UNIX下的automak
  • Hadoop安装目录

    root software hadoop 2 6 0 cdh5 15 1 etc hadoop 第一步骤 vi core site xml lt configuration gt lt property gt lt name gt fs d
  • 前端之浏览器

    你会不会和我一样 xff0c 开发了N年 xff0c 真要讲起浏览器 xff0c 发现自己一无所知 常用那几种浏览器测试 xff1f IE Safari Chrome Mozilla Firefox Opera 主流浏览器的内核有哪些 xf
  • Navicat远程连接Linux环境下MySQL(错误error:1045/1251/2003(10038)/2059)解决方案

    Navicat远程连接Linux环境下MySQL 错误error 1045 1251 2003 10038 2059 解决方案 心路历程 因为之后要学习有关数据库开发的课程 xff0c 我们需要部署云服务器并添加mysql功能 xff0c
  • MAX30102 血氧调试笔记

    一 血氧测量原理 1 1 PPG波形介绍 血氧饱和度 xff08 英语 xff1a Oxygen saturation xff09 xff0c 或称血氧浓度 xff0c 是指血中氧饱和血红蛋白相对于总血红蛋白 xff08 不饱和 43 饱和
  • HBase - Filter - 过滤器的介绍以及使用 | 那伊抹微笑

    博文作者 xff1a 那伊抹微笑 csdn 博客地址 xff1a http blog csdn net u012185296 itdog8 地址链接 http www itdog8 com thread 214 1 1 html 博文标题
  • sphereface:deep hypersphere embedding for face recognition

    SphereFace算法详解 AI之路 CSDN博客 sphereface 论文 xff1a SphereFace Deep Hypersphere Embedding for Face Recognition 论文链接 xff1a htt
  • python中的isdigit( )的使用

    python中的isdigit 函数是检测输入字符串是否只由数字组成 第三个例子既包含数字 xff0c 也包含字符串的话 xff0c 返回的也是一个False的布尔值 举例 xff1a
  • Debian没有sudo怎么办

    和Ubuntu不同 xff0c sudo命令在原始的Debian系统中时没有的 xff0c 需要额外安装 sudo apt get install sudo 编辑配置文件 xff0c 增加一个可以使用sudo命令的用户名 UserName
  • ES6——给对象部署Iterator接口

    Iterator接口的目的就是为所有数据结构提供一种统一访问的机制 xff0c 用for of 实现 一个数据结构只要有Symbol iterator属性 xff0c 就可以认为是 可遍历的 原型部署了Iterator接口的数据结构有三种