【发布时间】:2013-10-05 03:31:34
【问题描述】:
当我在 MDN 中阅读 Array.prototype.slice 时,我发现了一个例子:Array-like objects:
这里是示例代码:
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是Function.prototype的call()函数的绑定函数,this的值设置为Array.prototype的slice()函数。 -
slice()是this,那么如何产生结果[1, 2, 3]?我猜最后的电话是[1, 2, 3].slice(0),对吗?如果我是对的,怎么会发生这种情况,谁能给我解释一下内部过程?
【问题讨论】:
-
它基本上是在说
Array.prototype.slice.call( [1, 2, 3] , 0 );来理解,你应该更多地研究'call'和'bind'
标签: javascript call bind slice