Iterator (ok)

https://app.gitbook.com/@javascriptuse/s/advanced/chem-gio-ve-javascript-design-pattern-phan-2

Trong pattern này, bạn có một object chứa data có cấu trúc phức tạp, bạn muốn truy cập vào thuộc tính của object này một cách dễ dàng. Người dùng object không cần biết cấu trúc của object, họ chỉ cần làm việc với các thuộc tính riêng lẻ

Trong mô hình này, bạn cần phát triển một method next(),gọi hàm này để lấy phần tử tiếp theo

var element;
while (element = agg.next()) {
  // do something with the element ...
  console.log(element);
}

Implement iterator pattern như sau

var agg = (function() {
  var index = 0,
    data = [1, 2, 3, 4, 5],
    length = data.length;
  return {
    next: function() {
      var element;
      if (!this.hasNext()) {
        return null;
      }
      element = data[index];
      index = index + 1;
      return element;
    },
    hasNext: function() {
      return index < length;
    }
  };
}());

Để dễ dàng truy cập data, bạn có thể implement thêm một số method sau

rewind() : reset pointer trở về đầu

current(): trả về phần tử hiện tại

var agg = (function() {
  // [snip...]
  return {
    // [snip...]
    rewind: function() {
      index = 0;
    },
    current: function() {
      return data[index];
    }
  };
}());

Last updated

Navigation

Lionel

@Copyright 2023