当我在 MDN 中阅读 Array.prototype.slice 时,我找到了一个示例:类似数组的对象:
这是示例代码:
var unboundSlice = Array.prototype.slice;
var boundSlice = Function.prototype.call.bind(unboundSlice);
function list() {
return boundSlice(arguments, 0);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
调用时的函数调用过程是什么list(1, 2, 3)
?
- 我知道在
list()
,它调用boundSlice([1, 2, 3], 0)
。但是发生了boundSlice
什么? - 我知道这
boundSlice
是 的函数的绑定函数call()
,Function.prototype
其this
值设置为 的slice()
函数Array.prototype
。 slice()
是的this
,那么如何产生结果[1, 2, 3]
呢?我想最后的电话是[1, 2, 3].slice(0)
,对吗?如果我是对的,怎么会发生这种情况,有人可以向我解释一下内部过程吗?