长沙人才招聘网最新招聘2024,福州抖音seo,wordpress 评论群发,网站域名301设置前言#xff1a; // 迭代协议可以定制对象的迭代行为-分为两个协议#xff1a;可迭代协议、迭代器协议// 可迭代协议#xff1a;增加方法[Symbol,.iterator](){}#xff08;属性名表达式#xff09;返回符合协议器的对象// 迭代器协议:有next方法的对象#xff0c;next方…前言 // 迭代协议可以定制对象的迭代行为-分为两个协议可迭代协议、迭代器协议// 可迭代协议增加方法[Symbol,.iterator](){}属性名表达式返回符合协议器的对象// 迭代器协议:有next方法的对象next方法返回// 已结束{done:true}// 继续迭代{done:false,value:x}// 可以使用Generator或自己实现对象next
Generator法 scriptconst obj {// Symbol.iterator 内置常量//[属性名表达式](){}[Symbol.iterator](){// 手写const arr [1,2,3,4,5]let index 0return {next(){if(index arr.length){// 可以继续迭代return {done:false,value:arr[index]}}else{return {// 已结束done:true}}}}}}for(const iterator of obj){console.log(iterator,iterator)}/script
手写使用next和对象 scriptconst obj {// Symbol.iterator 内置常量//[属性名表达式](){}[Symbol.iterator](){// 使用Generatorfunction* gen(){yield 1yield 2yield 3yield 4yield 5}return gen()}}for(const iterator of obj){console.log(iterator,iterator)}/script