阅读源码的时候会看到这样操作:
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() 可以将类数组转换成数组,然后使用数组上内置的方法
原文地址:https://www.cnblogs.com/zhangqian1/p/12043735.html
时间: 2024-11-07 03:06:39