深入解读JavaScript

迭代器模式开发实践

2018-09-17  本文已影响0人  悟C

迭代器模式是指提供一种方法顺利访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

迭代器我们常见的Jquery的$.each、lodash的_.each,下面看一下如何实现一个迭代器:

function each(obj, callback) {
  var value,
      i = 0;
      length = obj.length,
      isArray = Object.prototype.toString.call(obj) === '[object Array]';

      if (isArray) {
        for (; i < length; i++) {
          value = callback.call(obj[i], i, obj[i]);
          if (value === false) {
            break;
          }
        }
      } else {
        for (i in obj) {
          value = callback.call(obj[i], i, obj[i]);
          if (value === false) {
            break;
          }
        }
      }
    return obj;
}

each([1, 2, 3], (index, item) => {
  console.log('数组迭代:', index, item);
});

each([1, 2, 3], (index, item) => {
  if (item === 2) {
    return false;
  }
  console.log('数组迭代:', index, item);
});

each({ name: 'zhangfu', age: 26 }, (index, item) => {
  console.log('对象迭代:', index, item);
});
/**
数组迭代: 0 1
数组迭代: 1 2
数组迭代: 2 3
数组迭代: 0 1
对象迭代: name zhangfu
对象迭代: age 26
**/

上面就是一个简单的迭代器,迭代模式比较简单很多时候并不被认为是一种模式。

上一篇下一篇

猜你喜欢

热点阅读