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.
28 lines
933 B
28 lines
933 B
'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; |
|
} |
|
});
|
|
|