de Rajat Saxena

Diferența dintre metodele de apelare, aplicare și legare JavaScript

Să-l străpungem în mintea noastră și să terminăm cu el, odată pentru totdeauna.

Diferenta dintre metodele de apelare aplicare si legare JavaScript
Apelul JavaScript vs aplicare vs legare

Scriu acest post micro, deoarece întrebarea menționată mai sus mă bântuie de foarte mult timp și știam că nu sunt singura. De fiecare dată când vedeam pe cineva folosind oricare dintre aceste trei metode la care trebuia să mă grăbesc MDN pentru a-mi da seama ce se întâmpla.

A fost suficient. Știam că trebuie să fac ceva și așa am făcut. Se presupune că am creat un glonț de argint proverbial care poate ajuta noii dezvoltatori JavaScript.

Declinare de responsabilitate: Aceasta nu este o soluție teoretică, ci o modalitate foarte ciudată de a ne aminti diferența.

Principala cauză de confuzie între call() și apply() metode este modul de a trece în argumentele suplimentare pe lângă this. Și de ce avem bind() oricum?

Deci, să învățăm cum să distingem cu ușurință cele trei.

Aplica()

apply(this [, [arg1, arg2,...]]): Apelează o funcție cu un furnizat this valoare. Argumente suplimentare sunt furnizate ca o singură matrice.

Mod de a-ți aminti: „Aacceptă argumentele ca Array ”sau„AA

Apel()

call(this [, arg1, arg2...]): Apelează o funcție cu un furnizat this. Argumente suplimentare sunt furnizate ca o listă separată prin virgulă

Modalități de reținut: „Argumentele apelului sunt separate prin virgule” sau „CC”.

Lega()

bind(this): Returnează o nouă funcție a cărei this valoarea este legată de valoarea furnizată.

Modalități de reținut: bind () este numai metoda din cele trei care returnează cu totul o nouă funcție. Nu apelează funcția.

Învelire

Sper că explicația de mai sus vă poate ajuta pe unii dintre voi. Cu siguranță mă ajută.

Aveți alte trucuri de memorare legate de programare? Vă rugăm să îl împărtășiți cu comunitatea, deoarece îi va ajuta pe toți. Mai ales în timpul acelor interviuri.

Dacă aveți întrebări sau îndoieli, contactați-mă pe Twitter @ rajat1saxena sau scrie-mi la rajat@raynstudios.com. Vă rugăm să recomandați această postare, dacă v-a plăcut și partajați-o cu rețeaua dvs.