GetIterator.js 755 B

123456789101112131415161718192021222324252627282930
  1. 'use strict';
  2. var $TypeError = require('es-errors/type');
  3. var getIteratorMethod = require('../helpers/getIteratorMethod');
  4. var AdvanceStringIndex = require('./AdvanceStringIndex');
  5. var Call = require('./Call');
  6. var GetMethod = require('./GetMethod');
  7. var isObject = require('es-object-atoms/isObject');
  8. var ES = {
  9. AdvanceStringIndex: AdvanceStringIndex,
  10. GetMethod: GetMethod
  11. };
  12. // https://262.ecma-international.org/6.0/#sec-getiterator
  13. module.exports = function GetIterator(obj, method) {
  14. var actualMethod = method;
  15. if (arguments.length < 2) {
  16. actualMethod = getIteratorMethod(ES, obj);
  17. }
  18. var iterator = Call(actualMethod, obj);
  19. if (!isObject(iterator)) {
  20. throw new $TypeError('iterator must return an object');
  21. }
  22. return iterator;
  23. };