JavaScript中的slice函数

String.slice(start,end)

slice()返回一个子片段,对原先的string没有影响,与subString的区别是,还可以用负数当参数,相当于是length+start,length+end.

例1:

var s = "abcdefg";
s.slice(0,4)    // "abcd"
s.slice(2,4)    // "cd"
s.slice(4)      // "efg"
s.slice(3,-1)   // "def"
s.slice(3,-2)   // "de"
s.slice(-3,-1)  // "ef"

Array.slice(start,end)

返回从start开始到end的子数组,如果end这个参数没有被设置,则返回从start开始到最后的数组元素。

例2:

var a = [1,2,3,4,5];
a.slice(0,3);    // [1,2,3]
a.slice(3);      // [4,5]
a.slice(1,-1);   // [2,3,4]
a.slice(-3,-2);  // [3]

除了正常用法,slice 经常用来将 array-like 对象转换为 true array。在一些框架中会经常有这种用法。

Array.prototype.slice.call(arguments);//将参数转换成真正的数组.

因为arguments不是真正的Array,虽然arguments有 length属性,但是没有slice方法,所以呢,Array.prototype.slice()执行的时候,Array.prototype已经被 call改成arguments了,因为满足slice执行的条件(有length属性).

转自:http://www.cnblogs.com/onlywujun/p/3515813.html

原文地址:https://www.cnblogs.com/lvmylife/p/5359835.html