12345678910111213141516171819202122232425262728 |
- 'use strict';
- var $TypeError = require('es-errors/type');
- var Call = require('./Call');
- var Get = require('./Get');
- var IsCallable = require('./IsCallable');
- var Type = require('./Type');
- // https://262.ecma-international.org/15.0/#sec-getiteratorfrommethod
- module.exports = function GetIteratorFromMethod(obj, method) {
- if (!IsCallable(method)) {
- throw new $TypeError('method must be a function');
- }
- var iterator = Call(method, obj); // step 1
- if (Type(iterator) !== 'Object') {
- throw new $TypeError('iterator must return an object'); // step 2
- }
- var nextMethod = Get(iterator, 'next'); // step 3
- return { // steps 4-5
- '[[Iterator]]': iterator,
- '[[NextMethod]]': nextMethod,
- '[[Done]]': false
- };
- };
|