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.
		
		
		
		
		
			
		
			
				
					27 lines
				
				876 B
			
		
		
			
		
	
	
					27 lines
				
				876 B
			| 
								 
											3 years ago
										 
									 | 
							
								// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
							 | 
						||
| 
								 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								var toObject = require('./_to-object');
							 | 
						||
| 
								 | 
							
								var toAbsoluteIndex = require('./_to-absolute-index');
							 | 
						||
| 
								 | 
							
								var toLength = require('./_to-length');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
							 | 
						||
| 
								 | 
							
								  var O = toObject(this);
							 | 
						||
| 
								 | 
							
								  var len = toLength(O.length);
							 | 
						||
| 
								 | 
							
								  var to = toAbsoluteIndex(target, len);
							 | 
						||
| 
								 | 
							
								  var from = toAbsoluteIndex(start, len);
							 | 
						||
| 
								 | 
							
								  var end = arguments.length > 2 ? arguments[2] : undefined;
							 | 
						||
| 
								 | 
							
								  var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
							 | 
						||
| 
								 | 
							
								  var inc = 1;
							 | 
						||
| 
								 | 
							
								  if (from < to && to < from + count) {
							 | 
						||
| 
								 | 
							
								    inc = -1;
							 | 
						||
| 
								 | 
							
								    from += count - 1;
							 | 
						||
| 
								 | 
							
								    to += count - 1;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  while (count-- > 0) {
							 | 
						||
| 
								 | 
							
								    if (from in O) O[to] = O[from];
							 | 
						||
| 
								 | 
							
								    else delete O[to];
							 | 
						||
| 
								 | 
							
								    to += inc;
							 | 
						||
| 
								 | 
							
								    from += inc;
							 | 
						||
| 
								 | 
							
								  } return O;
							 | 
						||
| 
								 | 
							
								};
							 |