You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					35 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					35 lines
				
				1.1 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | var addToUnscopables = require('./_add-to-unscopables'); | ||
|  | var step = require('./_iter-step'); | ||
|  | var Iterators = require('./_iterators'); | ||
|  | var toIObject = require('./_to-iobject'); | ||
|  | 
 | ||
|  | // 22.1.3.4 Array.prototype.entries()
 | ||
|  | // 22.1.3.13 Array.prototype.keys()
 | ||
|  | // 22.1.3.29 Array.prototype.values()
 | ||
|  | // 22.1.3.30 Array.prototype[@@iterator]()
 | ||
|  | module.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) { | ||
|  |   this._t = toIObject(iterated); // target
 | ||
|  |   this._i = 0;                   // next index
 | ||
|  |   this._k = kind;                // kind
 | ||
|  | // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
 | ||
|  | }, function () { | ||
|  |   var O = this._t; | ||
|  |   var kind = this._k; | ||
|  |   var index = this._i++; | ||
|  |   if (!O || index >= O.length) { | ||
|  |     this._t = undefined; | ||
|  |     return step(1); | ||
|  |   } | ||
|  |   if (kind == 'keys') return step(0, index); | ||
|  |   if (kind == 'values') return step(0, O[index]); | ||
|  |   return step(0, [index, O[index]]); | ||
|  | }, 'values'); | ||
|  | 
 | ||
|  | // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
 | ||
|  | Iterators.Arguments = Iterators.Array; | ||
|  | 
 | ||
|  | addToUnscopables('keys'); | ||
|  | addToUnscopables('values'); | ||
|  | addToUnscopables('entries'); |