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.
		
		
		
		
		
			
		
			
				
					29 lines
				
				933 B
			
		
		
			
		
	
	
					29 lines
				
				933 B
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								var $export = require('./_export');
							 | 
						||
| 
								 | 
							
								var html = require('./_html');
							 | 
						||
| 
								 | 
							
								var cof = require('./_cof');
							 | 
						||
| 
								 | 
							
								var toAbsoluteIndex = require('./_to-absolute-index');
							 | 
						||
| 
								 | 
							
								var toLength = require('./_to-length');
							 | 
						||
| 
								 | 
							
								var arraySlice = [].slice;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// fallback for not array-like ES3 strings and DOM objects
							 | 
						||
| 
								 | 
							
								$export($export.P + $export.F * require('./_fails')(function () {
							 | 
						||
| 
								 | 
							
								  if (html) arraySlice.call(html);
							 | 
						||
| 
								 | 
							
								}), 'Array', {
							 | 
						||
| 
								 | 
							
								  slice: function slice(begin, end) {
							 | 
						||
| 
								 | 
							
								    var len = toLength(this.length);
							 | 
						||
| 
								 | 
							
								    var klass = cof(this);
							 | 
						||
| 
								 | 
							
								    end = end === undefined ? len : end;
							 | 
						||
| 
								 | 
							
								    if (klass == 'Array') return arraySlice.call(this, begin, end);
							 | 
						||
| 
								 | 
							
								    var start = toAbsoluteIndex(begin, len);
							 | 
						||
| 
								 | 
							
								    var upTo = toAbsoluteIndex(end, len);
							 | 
						||
| 
								 | 
							
								    var size = toLength(upTo - start);
							 | 
						||
| 
								 | 
							
								    var cloned = new Array(size);
							 | 
						||
| 
								 | 
							
								    var i = 0;
							 | 
						||
| 
								 | 
							
								    for (; i < size; i++) cloned[i] = klass == 'String'
							 | 
						||
| 
								 | 
							
								      ? this.charAt(start + i)
							 | 
						||
| 
								 | 
							
								      : this[start + i];
							 | 
						||
| 
								 | 
							
								    return cloned;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 |