美文网首页
为Object实现iterator接口

为Object实现iterator接口

作者: 任无名F | 来源:发表于2017-10-28 16:07 被阅读0次
    let obj = {a:1, b:2, c:3};
    
    // method 1
    obj[Symbol.iterator] = function() {
      let index = 0,
          list = Object.keys(this).map(e=>this[e]);
      return {
        next: () => {
          return {
            value: list[index++],
            done: index > list.length,
          };
        },
      };
    }
    
    // method 2
    obj[Symbol.iterator] = function* () {
      let list = Object.keys(this).map(e=>this[e]);
      for(let v of list) {
        yield v;
      }
    }
    
    for(let item of obj) {
      console.log(item); // 1 2 3
    }
    

    相关文章

      网友评论

          本文标题:为Object实现iterator接口

          本文链接:https://www.haomeiwen.com/subject/gsjspxtx.html