84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我看了一下答案是:
function callIt(fn) { // console.log([].slice.call(arguments,1)); return fn.apply(this,[].slice.call(arguments,1)); }
我对这个[].slice.call(arguments,1)个地方不是太懂,可以帮我具体讲解下这个地方吗??谢谢
认证高级PHP讲师
arguments 是伪数组,不能直接调用 slice 方法(也就是在原型上找不到 slice 方法),所以用数组 [] 来访问 slice 方法(也可以用 Array.prototype.slice,但是调用者要变更一下,所以用了 call 方法来指定方法被调用时的 this 对象。为什么要用 slice 方法呢?你把 arguments 打印出来看一下就明白了。
arguments
slice
[]
Array.prototype.slice
call
this
要是想多了解下apply、call和Bind的话,可以看下这票文章。http://www.cnblogs.com/skylor/p/4723612.html
arguments
是伪数组,不能直接调用slice
方法(也就是在原型上找不到slice
方法),所以用数组[]
来访问slice
方法(也可以用Array.prototype.slice
,但是调用者要变更一下,所以用了call
方法来指定方法被调用时的this
对象。为什么要用slice
方法呢?你把arguments
打印出来看一下就明白了。要是想多了解下apply、call和Bind的话,可以看下这票文章。http://www.cnblogs.com/skylor/p/4723612.html