Array.prototype.slice.call(arguments,0);

有过不少人问过我这么一个语句是什么意思,乍一看确实不好理解.

我们把这样一段代码分开来解释一下.

 

1.Array.prototype.slice

slice的用法想必不用我多说,截取并返回数组的一部分;

e.g:

"JavaScript".slice(0,4);    //Java
["a","b","c","d"].slice(2,4)    //c,d

可以这么说,有length属性的都可以使用slice方法

 

2.call(arguments,0)

call的用法我在前面的随笔中有过介绍,就是把call(arguments,0)括号中的arguments来代替Array.prototype来执行slice,那我们为什么不直接使用arguments.slice
上文说到,有length的数组或者字符串才可以使用slice方法,然而 arguments == "object"

 

Array.prototype.slice.call(arguments,0); 这句话就很好理解了;

当然我们也可以写成 [].slice.call(arguments,0)

 

再举个栗子!

function foo(obj)

{
  var args = [].slice.call(arguments,0);

  return args;
}

var a = new Object();

console.log(foo(a));  //数组:Object;

把Object对象强制转换为了数组Object;

 

当然这个栗子不是很好,只是让大家了解一下用法而已.

 

 

 

 

 

Posted on 2013-05-18 06:32  SmileCN  阅读(283)  评论(0编辑  收藏  举报