ES6——给对象部署Iterator接口

本文探讨了ES6中的Iterator接口,它为数据结构提供统一的遍历机制,使得使用for...of成为可能。虽然数组、类似数组对象、Set和Map等支持Iterator接口,但对象并未部署此接口,原因是其属性遍历顺序不确定性以及Map的存在。尽管如此,讨论为何要为对象部署Iterator接口依然有意义,例如应对特殊情况或面试问题。测试部分提到了一个含有one、two、three属性的对象。
摘要由CSDN通过智能技术生成

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值