【发布时间】:2014-01-02 03:57:31
【问题描述】:
我见过很多 java 脚本代码,它们使用 call 和 apply 方法来调用函数。 我对确切的区别以及在什么条件下使用哪一个有点困惑。
【问题讨论】:
标签: jquery
我见过很多 java 脚本代码,它们使用 call 和 apply 方法来调用函数。 我对确切的区别以及在什么条件下使用哪一个有点困惑。
【问题讨论】:
标签: jquery
它们不是 jQuery 的东西,它们是 JavaScript 的东西。
它们做同样的事情:它们在函数调用中使用this 的特定值调用给定函数。唯一的区别是您如何指定要传递给函数的参数。使用call,您可以将它们指定为一系列离散参数(在第一个参数之后,用作this)。使用apply,您可以将它们指定为一个数组(同样在第一个参数之后,即用作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
在这两种情况下,我们看到:
这=酒吧 a = 1 b = 2 c = 3【讨论】: