create-iterator-constructor.js 746 B

12345678910111213141516
  1. 'use strict';
  2. var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
  3. var create = require('../internals/object-create');
  4. var createPropertyDescriptor = require('../internals/create-property-descriptor');
  5. var setToStringTag = require('../internals/set-to-string-tag');
  6. var Iterators = require('../internals/iterators');
  7. var returnThis = function () { return this; };
  8. module.exports = function (IteratorConstructor, NAME, next) {
  9. var TO_STRING_TAG = NAME + ' Iterator';
  10. IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
  11. setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
  12. Iterators[TO_STRING_TAG] = returnThis;
  13. return IteratorConstructor;
  14. };