Factory Functions & Singleton Pattern

What design pattern does this factory function implement?
function createIterator(array) {
  let nextIndex = 0;
  
  return {
    next() {
      if (nextIndex < array.length) {
        return { value: array[nextIndex++], done: false };
      } else {
        return { done: true };
      }
    },
    hasNext() {
      return nextIndex < array.length;
    },
    reset() {
      nextIndex = 0;
    }
  };
}
Next Question (27/32)