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; | ||
|  |   } | ||
|  | }); |