for...of 之迭代

迭代协议:规定了迭代与实现的逻辑;

迭代器:具体迭代试下的逻辑;

迭代对象:可被迭代的对象  [Symbol.iterator]  方法

迭代语句:

for...of  根据迭代对象的迭代器具体实现迭代对象数据;

(for...in   以原始插入的顺序迭代对象的可枚举属性)

例子:

  let obj = {
    name: 'zhangsan',
    age: 18,
  };

  // 迭代协议
  obj[Symbol.iterator] = function () {
    let keys = Object.keys(obj);
    let n = 0;
    let len = keys.length;
    return {
      next: function() {
        if(n < len) {
          return {
            value: {k: keys[n], v: obj[keys[n++]]},
            done: false
          }
        } else {
          return {
            done: true
          }
        }
      }
    }
  }

  for(var item of obj) {
    console.log(item);
  }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章