slice
定义
slice()
方法返回一个新的数组对象,这一对象是一个由 begin
和 end
决定的原数组的浅拷贝(包括 begin
,不包括end
)。原始数组不会被改变。
语法
begin
可选提取起始处的索引(从 0
开始),从该索引开始提取原数组元素。
如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,
slice(-2)
表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。如果省略
begin
,则slice
从索引0
开始。如果
begin
大于原数组的长度,则会返回空数组。
end
可选提取终止处的索引(从 0
开始),在该索引处结束提取原数组元素。slice
会提取原数组中索引从 begin
到 end
的所有元素(包含 begin
,但不包含 end
)。
slice(1,4)
会提取原数组中从第二个元素开始一直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。
slice(-2,-1)
表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。如果
end
被省略,则slice
会一直提取到原数组末尾。如果
end
大于数组的长度,slice
也会一直提取到原数组末尾。
描述
slice
不会修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。
例子
一个常见应用
很多时候会看见这样的的代码
这样可以拷贝生成一个新数组
另一个常见应用
首先slice
返回里一个函数,[]
只是起到这是Array的一个实例对象
而已,也就是说[].slice
等于Array.prototype.slice
[].slice的好处是,Array是可以重写的,并且这样写也比较简单
至于call
函数,再温习一遍。这是Javascript比较魔法的地方,不同对象之间可以借用方法运行。实例
因此,这里就比较明显了。传入的arguments
从索引1到结尾的数据范围赋值给了args
最后更新于