Function.prototype.call.bind如何在此代码中工作

Col*_*sky 3 javascript

我真的可以使用任何人的解释.

对此代码严重困惑.尤其是第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)

Cuo*_* Ta 5

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]