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

23 浏览
0 Comments

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

这个问题已经有了答案:

call和apply有什么区别?

我看过很多使用call和apply方法调用函数的JavaScript代码。

我有点困惑它们之间的确切区别和在什么条件下使用哪一个。

admin 更改状态以发布 2023年5月21日
0
0 Comments

它们不是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

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

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