function.prototype.call.bind在此代码中起作用



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

对此代码严重混淆。特别是第2行。

代码源是https://developer.mozilla.org/en/docs/web/javascript/reference/global_objects/array/slay/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]

var slice = Function.prototype.call.bind(unboundSlice);

将函数callunboundSlice作为上下文(this运算符)将执行。因此,执行时: list(1,2,3)< =>

slice([1,2,3])< =>

用上下文unboundSlice和参数argumentsunboundSlice.call(arguments)< =>

来解除call

用上下文arguments (array [1,2,3])执行unboundSlice函数:[1,2,3].unboundSlice()< =>

执行: [1,2,3].slice()< =>

[1, 2, 3]

最新更新