我真的可以使用任何人的解释.
对此代码严重困惑.尤其是第2行.
代码源是https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
var unboundSlice = Array.prototype.slice;
var slice = Function.prototype.call.bind(unboundSlice);
function list() {
return slice(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
var slice = Function.prototype.call.bind(unboundSlice);
传递函数将执行的unboundSlice上下文(this运算符)call.所以当执行时:
list(1,2,3)<=>
slice([1,2,3]) <=>
excecute call具有上下文unboundSlice和参数arguments:unboundSlice.call(arguments)<=>
unboundSlice使用上下文执行函数arguments (array [1,2,3]):[1,2,3].unboundSlice()<=>
执行:[1,2,3].slice()<=>
[1, 2, 3]
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |