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