对象添加迭代器

Posted sea-breeze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象添加迭代器相关的知识,希望对你有一定的参考价值。

 

 

可迭代协议允许 javascript 对象去定义或定制它们的迭代行为, 例如(定义)在一个 for..of结构中什么值可以被循环(得到)。

一些内置类型都是内置的可迭代类型并且有默认的迭代行为( 比如 String、Array、Map、Set), 另一些类型则不是 (比如Object) 。

 

为了变成可迭代对象, 一个对象必须实现 @@iterator 方法, 意思是这个对象(或者它原型链 prototype chain 上的某个对象)必须有一个名字是 Symbol.iterator 的属性。

 

let fridge = { name: "卡萨帝冰箱", color: "白色", brand: "海尔" };
fridge[Symbol.iterator] = function*() {
  yield this.name;
  yield this.color;
  yield this.brand;
};

for(let attr of fridge){
  console.log(attr);
}

let desc = [...fridge];
console.log(desc);

 

技术图片

 

一些内置类型(String、Array、Map、Set)拥有默认的迭代器行为,其他类型(如 Object)则没有。

以上是关于对象添加迭代器的主要内容,如果未能解决你的问题,请参考以下文章

Python初探第二篇-装饰器和迭代器,生成器

python-之装饰器迭代器生成器

设计模式-迭代器模式

集合框架之——迭代器并发修改异常ConcurrentModificationException

代码详解生成器迭代器

如何在伪造查看器中将自定义材质添加到片段