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);
  }

 

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