84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
我看了一下答案是:
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