ECMAScript 2015 可迭代协议:迭代普通对象

 

 

可迭代协议允许 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)则没有。

posted on 2019-05-11 17:35  沙滩海风  阅读(123)  评论(0编辑  收藏  举报

导航