Что такое функция .apply jQuery?


90

Я вижу это в разных плагинах и кодах, но не понимаю, что это за функция ... В jQuery api нет ссылок!


21
Его нет в справочнике jQuery, поскольку это [ собственная функция Javascript ] ( developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… ).
Питер Айтай,

Ответы:


126

applyвызывает функцию с набором аргументов. Это не часть jQuery, это часть ядра Javascript. Однако об этом упоминается в документации jQuery:

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

Синтаксис:

somefunction.apply(thisObj, [argsArray])

Вышеупомянутое вызывает функцию somefunction, устанавливает ее thisв thisObjпределах области действия и передает аргументы из argsArrayв качестве аргументов функции.


2
Связана функция [ .call () ] ( mdn.beonex.com/en/Core_JavaScript_1.5_Reference/Global_Objects/… ), которая также принимает this, но за ней следует серия отдельно перечисленных аргументов вместо массива, содержащего аргументы .
Питер Айтай,

что будет ниже делать чем? $ .when.apply (null, объект) .done (обратный вызов);
Gohel Kiran

@ user1531437 Это вызовы $.when(object).done(callback);, но и в функции $.when, thisустанавливается в качестве первого параметра, то есть null. Возможно, следует использовать, $.when.call(null, object).done(callback);потому что второй параметр .applyдолжен быть массивом
Люк Мадханга 07

Отдаленно связана функция прокси jQuery , которая полезна для изменения значения, thisто есть переменной контекста, как это applyможет делать собственный Javascript
Red Pea

5

По сути, apply вызовет функцию с контекстом, установленным для объекта, к которому вы применяете функцию. Это означает, что внутри функции ссылка thisбудет относиться к этому объекту.


Для тех, кто работает с jQuery и приходит к этому ответу, вам необходимо использовать его $(this)для получения связанного объекта jQuery и доступа к методам jQuery.
Р. Шрерс

@ R.Schreurs также вам необходимо использовать объект jQuery.fn, как показано здесь: stackoverflow.com/a/27374435/674033
AVProgrammer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.