?call和apply方法在jQuery中有什么区别?
?call和apply方法在jQuery中有什么区别?
这个问题已经有了答案:
我看过很多使用call和apply方法调用函数的JavaScript代码。
我有点困惑它们之间的确切区别和在什么条件下使用哪一个。
admin 更改状态以发布 2023年5月21日
它们不是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