Javascript .call和.apply之间的区别

Javascript .call和.apply之间的区别,javascript,native,Javascript,Native,有没有一种简单的方法可以将所有参数从一个函数传递到另一个函数,并同时发送this 我试过这个: 但它留给我的是f1中的所有参数都堆叠在f2参数0中: f2->arguments[0] == f1->arguments 好的,当我运行apply方法时,它会工作: 那么,有人能告诉我call和apply之间的区别吗?callMDN: 使用给定的此值和单独提供的参数调用函数 应用MDN: 使用给定的此值和作为数组提供的参数调用函数 我想你自己刚刚发现了差异 调用与您通常调用函数的方式几乎

有没有一种简单的方法可以将所有参数从一个函数传递到另一个函数,并同时发送
this

我试过这个:

但它留给我的是f1中的所有参数都堆叠在f2参数0中:

f2->arguments[0] == f1->arguments
好的,当我运行
apply
方法时,它会工作:


那么,有人能告诉我
call
apply
之间的区别吗?

callMDN:

使用给定的此值和单独提供的参数调用函数

应用MDN:

使用给定的此值和作为数组提供的参数调用函数


我想你自己刚刚发现了差异

调用
与您通常调用函数的方式几乎相同,只是在参数列表的开头有一个额外的参数,您可以在这里放置
对象的引用

apply
也将第一个参数作为
对象,但第二个参数应为数组。此数组用于提供被调用函数所需的所有参数。元素0映射到函数参数列表中的第一个参数,元素1映射到第二个参数,依此类推

f2->arguments[0] == f1->arguments
var f1 = function() {
    f2.apply(this, arguments);
};
var f2 = function() {
    console.log(arguments);
};
f1("abc", "def", "hij");
fun.call(thisArg[, arg1[, arg2[, ...]]])
fun.apply(thisArg[, argsArray])