javascript Array.prototype.slice的使用示例
javascript Array.prototype.slice的使用示例
发布时间:2016-12-30 来源:查字典编辑
摘要:经常的,可以看到Array.prototype.slice(arguments,0);这个写法可以用于function(){}内,这样可以将...

经常的,可以看到Array.prototype.slice(arguments, 0); 这个写法可以用于function() {} 内,这样可以将函数的参数列表转换成一个真正的数组。请看一个例子:

复制代码 代码如下:

var slice = Array.prototype.slice;

var toString = Object.prototype.toString;

(function() {

var args = arguments;

console.log(args, toString.call(args)); // [1, 2, 3] "[object Arguments]"

var argsArr = slice(args, 0);

console.log(argsArr, toString.call(argsArr)); // [1, 2, 3] "[object Array]"

}(1,2,3))

我们可以看到函数的参数列表arguments通过slice调用以后,一秒钟变Array了。

同样的,也可以将选中的DOM元素转换成数组:

复制代码 代码如下:

slice.call(document.querySelectorAll("div"));

顺藤摸瓜,我们想想,slide方法是否可以将对象转换成数组呢?请看例子:

复制代码 代码如下:

console.log(slice.call('string')); // ["s", "t", "r", "i", "n", "g"]

console.log(slice.call(new String('string'))); // ["s", "t", "r", "i", "n", "g"]

每次,字符串会直接被转换成了一个数组。

但是,数字,布尔值的会转换成一个空的数组:

复制代码 代码如下:

console.log(slice.call(33));

console.log(slice.call(true));

普通的对象也会被转换成空数组,除非你给它加上一个length属性:

复制代码 代码如下:

console.log(slice.call({name: 'obj'})); // []

console.log(slice.call({0: 'zero', 1: 'one'})); // []

console.log(slice.call({0: 'zero', 1: 'one', name: 'obj', length: 2})); // ["zero", "one"]

还有,它还可以用来clone数组:

复制代码 代码如下:

var srcArr = [1,2,3];

var newArr = srcArr.slice(0);

console.log(srcArr, newArr); // [1,2,3] [1,2,3]

console.log(srcArr == newArr); // false

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类