jQuery中call和apply方法有什么区别

时间:2013-12-14 11:05:12

标签: jquery

我见过很多java脚本代码,它使用call和apply方法来调用函数。 我对确切的差异以及在什么条件下使用哪一个有点混淆。

1 个答案:

答案 0 :(得分:3)

他们不是jQuery的东西,他们是JavaScript的东西。

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

所以说我们有:

function foo(a, b, c) {
   console.log("this = " + this);
   console.log("a = " + a);
   console.log("b = " + b);
   console.log("a = " + c);
}

这两个调用完全相同:

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

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

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

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