Spaces:
Configuration error
Configuration error
; | |
var GetIntrinsic = require('get-intrinsic'); | |
var $TypeError = GetIntrinsic('%TypeError%'); | |
var getIteratorMethod = require('../helpers/getIteratorMethod'); | |
var AdvanceStringIndex = require('./AdvanceStringIndex'); | |
var Call = require('./Call'); | |
var GetMethod = require('./GetMethod'); | |
var IsArray = require('./IsArray'); | |
var Type = require('./Type'); | |
// https://262.ecma-international.org/6.0/#sec-getiterator | |
module.exports = function GetIterator(obj, method) { | |
var actualMethod = method; | |
if (arguments.length < 2) { | |
actualMethod = getIteratorMethod( | |
{ | |
AdvanceStringIndex: AdvanceStringIndex, | |
GetMethod: GetMethod, | |
IsArray: IsArray | |
}, | |
obj | |
); | |
} | |
var iterator = Call(actualMethod, obj); | |
if (Type(iterator) !== 'Object') { | |
throw new $TypeError('iterator must return an object'); | |
} | |
return iterator; | |
}; | |