Разликата между методите за извикване, прилагане и свързване на JavaScript

Нека да го пробием в съзнанието си и да приключим с него, веднъж завинаги.

Пиша тази микро публикация, защото гореспоменатият въпрос ме преследва от много дълго време и знаех, че не съм единственият. Всеки път, когато видях някой да използва някой от тези три метода, трябваше да бързам към MDN, за да разбера какво става.

Достатъчно беше достатъчно. Знаех, че трябва да направя нещо и го направих. Предполагам, че съм създал пословичен сребърен куршум, който може да помогне на новите разработчици на JavaScript.

Отказ от отговорност : Това не е теоретично решение, а наистина шантав начин да запомните разликата.

Главната причина за объркване на call()и apply()методи е как да се премине през допълнителни аргументи, освен this. И защо въобще имаме bind()?

Така че нека се научим как лесно да различаваме тримата.

Приложи()

apply(this [, [arg1, arg2,...]]): Извиква функция с предоставена thisстойност. Допълнителни аргументи се предоставят като единичен масив .

Начин на запомняне : „ Едно приложение приема аргументи като масив A “ или „ AA

Обади се()

call(this [, arg1, arg2...]): Извиква функция с предоставена this. Допълнителни аргументи се предоставят като списък, разделен със запетая

Начини за запомняне: „Аргументите на повикването са разделени със запетаи“ или „ CC “.

Обвързване ()

bind(this): Връща нова функция, чиято thisстойност е обвързана с предоставената стойност.

Начини за запомняне: bind () е единственият метод от трите, който изцяло връща нова функция. Той не извиква функцията.

Увийте

Надявам се горното обяснение да помогне на някои от вас там. Със сигурност ми помага.

Имате ли други трикове за запаметяване, свързани с програмирането? Моля, споделете го с общността, тъй като това ще помогне на всички. Особено по време на тези интервюта.

Ако имате някакви въпроси или съмнения, изпратете ми съобщение в Twitter @ rajat1saxena или ми пишете на [email protected] Моля, препоръчайте тази публикация, ако ви е харесала, и я споделете с вашата мрежа.