Array.prototype.slice.call(arguments) 通俗法理解

Posted 灰姑娘的冰眸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Array.prototype.slice.call(arguments) 通俗法理解相关的知识,希望对你有一定的参考价值。

Array.prototype.slice.call(arguments,num) 能将具有length属性的对象转成数组。
 
slice 从字面上的意思可以理解为截取数组的一部分。
call 从字面上的意思可以理解为截取出来
arguments 仅与数组类似,不是真正的数组对象,所以它并没有slice这个方法,让arguments转换成一个数组对象,让arguments具有slice()方法。
注:要是直接写arguments.slice(num)会报错。
那么 Array.prototype.slice.call(arguments,num); 即把调用方法的参数截取出来。 
如:
var a={length:2,0:‘first‘,1:‘second‘};//类数组,有length属性,长度为2,第0个是first,第1个是second
console.log(Array.prototype.slice.call(a,0));// ["first", "second"],调用数组的slice(0);

var a={length:2,0:‘first‘,1:‘second‘};
console.log(Array.prototype.slice.call(a,1));//["second"],调用数组的slice(1);

var a={0:‘first‘,1:‘second‘};//去掉length属性,返回一个空数组
console.log(Array.prototype.slice.call(a,0));//[]
function test(){
  console.log(Array.prototype.slice.call(arguments,0));//["a", "b", "c"],slice(0)
  console.log(Array.prototype.slice.call(arguments,1));//["b", "c"],slice(1)
}
test("a","b","c");
 

以上是关于Array.prototype.slice.call(arguments) 通俗法理解的主要内容,如果未能解决你的问题,请参考以下文章