在这段代码中,Function.prototype.call.bind 是如何工作的?

4

1
它硬编码(可以这么说)了 Array.prototype.slice.call.call 部分,将数组实例的方法转换为一个接受数组作为参数的函数。 - Jared Smith
人们很容易就会称之为“重复”。这是一个非常具体的问题,针对MDN网站上的特定代码示例。这是一个好问题,答案与所提出的代码有关。 - Drenai
1个回答

7

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

这段代码的意思是将unboundSlice作为上下文(this操作符)来执行函数call。因此,当执行:list(1,2,3) 时相当于执行:

slice([1,2,3])

在执行call函数时,使用unboundSlice作为上下文,arguments作为参数,即:unboundSlice.call(arguments)

接着,使用arguments (array [1,2,3])作为上下文来执行unboundSlice函数:[1,2,3].unboundSlice()

最后,执行:[1,2,3].slice(),结果为:[1, 2, 3]


非常感谢您。 - W3Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接