什么是.apply jQuery函数?

92
我在不同的插件和代码中看到了这个函数,但我不理解它的作用...在jQuery API中也没有提到!

21
这个函数不在jQuery参考手册中,因为它是一个原生JavaScript函数 - Peter Ajtai
2个回答

128

apply调用一个带有一组参数的函数。它不是jQuery的一部分,而是核心JavaScript的一部分。不过,在jQuery文档中有提到它:

http://docs.jquery.com/Types#Context.2C_Call_and_Apply

语法:

somefunction.apply(thisObj, [argsArray])

以上代码调用函数 somefunction,在函数作用域内将this设置为thisObj,并将argsArray中的参数作为函数的参数传递。


2
相关的是 .call() 函数 ,它也需要一个 this,但是后面跟着一系列单独列出的参数,而不是包含参数的数组。 - Peter Ajtai
下面的代码会做什么?$.when.apply(null, object).done(callback); - Gohel Kiran
@user1531437 调用 $.when(object).done(callback);,但在函数 $.when 中,this 被设置为第一个参数,即 null。可以说,应该使用 $.when.call(null, object).done(callback);,因为 .apply 的第二个参数应该是一个数组。 - Luke Madhanga
有点相关的是jQuery代理函数,它可以改变this即上下文变量的值,就像Javascript的本地apply函数一样有用。 - Nate Anderson

5

实际上,apply会使用指定的对象作为函数执行时的上下文。这意味着在函数内部,引用this将指向该对象。


对于任何使用jQuery并查看此答案的人,您需要使用$(this)来获取相关的jQuery对象并访问jQuery方法。 - R. Schreurs
@R.Schreurs,您还需要使用jQuery.fn对象,如此处所示:http://stackoverflow.com/a/27374435/674033 - AVProgrammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接