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

深入理解js的prototype以及prototype的一些应用

关于js的for in循环,慎用

关于js事件执行顺序小技巧

在 es6 Map 上调用 `Array.prototype.some()` 的更好方法