gpt4 book ai didi

javascript - 为什么我不能使用 Array.join.call 代替 Array.prototype.join.call

转载 作者:行者123 更新时间:2023-11-30 08:10:48 25 4
gpt4 key购买 nike

function test()
{
alert(Array.join.call(arguments,'/')) //alerts /
alert(Array.prototype.join.call(arguments,'/')) //alerts Js/JScript
alert(Array.join(arguments,'/')) //alerts Js/JScript
}
test('Js','JScript');

为什么会有这种差异?为什么需要先引用原型(prototype)?还有为什么即使 join 只需要一个分隔符参数,Array.join 也会给出所需的结果。

最佳答案

Array.join 是一个全局函数。使用 call 时,作为第一个参数传递的是 join 函数体中 this 对象,然后是 join 函数。

js> Array.join.call(null, [1, 2], "/")   
"1/2"

Array.prototype.join 用于 Array 的实例。因此,它期望 this 是实际数组,这就是您的第二个示例起作用的原因。你的第二个例子相当于调用 Array.prototype.join 并且 this 对象是 arguments,这正是 arguments.join("/”)。参见 MDN寻求解释。

关于javascript - 为什么我不能使用 Array.join.call 代替 Array.prototype.join.call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10767129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com