js一些小技巧,关于Array.prototype.push,Array.prototype.slice的用法
Posted zhangqian1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js一些小技巧,关于Array.prototype.push,Array.prototype.slice的用法相关的知识,希望对你有一定的参考价值。
阅读源码的时候会看到这样操作:
1.Array.prototype.push的介绍
var push = Array.prototype.push;
push.apply(args, arguments);
为什么会用push.apply,而不是直接push呢?
//push.apply
var a = [1,2,3] , b = [4,5,6],push = Array.prototype.push;
push.apply(a,b) ;
console.log(a) // [1, 2, 3, 4, 5, 6]
//push
var a = [1,2,3] , b = [4,5,6];
a.push(b)
console.log(a) // [1, 2, 3, Array(3)]
数组的push方法接收一个参数列表返回,它不会自动把数组扩展成参数列表,
使用apply的写法可以将数组型参数扩展成参数列表,这样合并两个数组就可以直接传数组参数。
2.Array.prototype.slice的介绍
典型的类数组:arguments ,
function a(a,b){
var args = arguments;
console.log( args.length); // 虽然有length,但是操作数组的方法会报错
console.log( Array.prototype.slice.apply(arguments)) // [1, 2]
}
a(1,2);
Array.prototype.slice.apply() 可以将类数组转换成数组,然后使用数组上内置的方法
以上是关于js一些小技巧,关于Array.prototype.push,Array.prototype.slice的用法的主要内容,如果未能解决你的问题,请参考以下文章
js中Array.prototype.unique,unique啥意思
关于在函数中使用Array.prototype.slice.call而不是直接用slice