Що таке .apply jQuery функція?


90

Я бачу це в різних плагінах та кодах, але я не розумію, що це робить ... У jQuery api немає посилань!


21
Його немає в посиланні jQuery, оскільки це [ рідна функція Javascript ] ( developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… ).
Peter Ajtai

Відповіді:


125

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/… ), яка також приймає a 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 07

Далеко пов’язана була функція проксі jQuery , яка корисна для зміни значення, thisтобто змінної контексту, як це applyможе робити рідний Javascript
The Red Pea

5

По суті, apply буде викликати функцію із встановленим контекстом до об’єкта, до якого ви застосовуєте функцію. Це означає, що в межах функції посилання thisбуде посилатися на цей об'єкт.


Для всіх, хто працює з jQuery та $(this)отримує цю відповідь, вам потрібно буде скористатися цим, щоб отримати відповідний об’єкт jQuery та мати доступ до методів jQuery.
R. Schreurs,

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