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.
		
		
		
		
		
			
		
			
				
					
					
						
							31 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							31 lines
						
					
					
						
							1.2 KiB
						
					
					
				| 'use strict'; | |
| var charAt = require('../internals/string-multibyte').charAt; | |
| var toString = require('../internals/to-string'); | |
| var InternalStateModule = require('../internals/internal-state'); | |
| var defineIterator = require('../internals/iterator-define'); | |
| var createIterResultObject = require('../internals/create-iter-result-object'); | |
| 
 | |
| var STRING_ITERATOR = 'String Iterator'; | |
| var setInternalState = InternalStateModule.set; | |
| var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); | |
| 
 | |
| // `String.prototype[@@iterator]` method | |
| // https://tc39.es/ecma262/#sec-string.prototype-@@iterator | |
| defineIterator(String, 'String', function (iterated) { | |
|   setInternalState(this, { | |
|     type: STRING_ITERATOR, | |
|     string: toString(iterated), | |
|     index: 0 | |
|   }); | |
| // `%StringIteratorPrototype%.next` method | |
| // https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next | |
| }, function next() { | |
|   var state = getInternalState(this); | |
|   var string = state.string; | |
|   var index = state.index; | |
|   var point; | |
|   if (index >= string.length) return createIterResultObject(undefined, true); | |
|   point = charAt(string, index); | |
|   state.index += point.length; | |
|   return createIterResultObject(point, false); | |
| });
 |