29 lines
		
	
	
		
			933 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			933 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'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;
 | 
						|
  }
 | 
						|
});
 |