jquery中的call和apply方法有什么区别?

What is the difference between call and apply method in jQuery

本问题已经有最佳答案,请猛点这里访问。

我见过很多Java脚本代码,它使用调用以及应用方法来调用函数。我对确切的区别和在什么条件下使用哪一种有点困惑。


它们不是jquery,而是javascript。

它们做同样的事情:它们使用函数调用中this的特定值调用给定的函数。唯一的区别是如何指定传递给函数的参数。使用call时,您将它们指定为一系列离散参数(在第一个参数之后,这是用作this的参数)。使用apply时,您将它们指定为一个数组(在第一个arg之后再次指定,它是用来作为this的对象)。

所以说我们有:

1
2
3
4
5
6
function foo(a, b, c) {
   console.log("this =" + this);
   console.log("a =" + a);
   console.log("b =" + b);
   console.log("a =" + c);
}

这两个电话的作用完全相同:

1
2
3
4
5
foo.call("bar", 1, 2, 3);
// Note --------^--^--^--- a series of discrete args

foo.apply("bar", [1, 2, 3]);
// Note ---------^-------^-- args as an array

在这两种情况下,我们都可以看到:

1
2
3
4
this = bar
a = 1
b = 2
c = 3