我真的可以使用任何人的解释。
对此代码严重混淆。特别是第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);
将函数call
的unboundSlice
作为上下文(this
运算符)将执行。因此,执行时: list(1,2,3)
< =>
slice([1,2,3])
< =>
用上下文unboundSlice
和参数arguments
: unboundSlice.call(arguments)
< =>
call
用上下文arguments (array [1,2,3])
执行unboundSlice
函数:[1,2,3].unboundSlice()
< =>
执行: [1,2,3].slice()
< =>
[1, 2, 3]