Articles

Javascript: call (), apply () și bind ()

call (), apply () și bind () — o nouă speranță

până acum am tratat funcțiile ca obiecte care sunt compuse dintr-un nume (opțional, poate fi și o funcție anonimă) și Codul pe care îl execută atunci când este invocat. Dar acesta nu este întregul adevăr. Ca persoană iubitoare de adevăr, trebuie să vă anunț că o funcție arată de fapt mai aproape de următoarea imagine:

ce este asta??????? Nu-ți face griji! Voi merge acum prin aceste 3 metode similare care apar pe fiecare funcție cu exemple. Bucură-te!

bind ()

documentele oficiale spun:bind() metoda creează o nouă funcție care, atunci când este apelată, are cuvântul cheiethis setat la valoarea furnizată. (De fapt, vorbește despre și mai multe lucruri, dar vom lăsa asta pentru altă dată :))

Acest lucru este extrem de puternic. Să ne definim în mod explicit valoarea this atunci când apelați o funcție. Să ne uităm la cooooode:

folosind bind() method on line 14.

să-l rupe în jos. Când folosimbind() metodă:

  1. motorul JS creează o nouăpokemonName instanță și legarepokemon ca variabilăthis. Este important să înțelegeți că copiază funcția pokemonName.
  2. după crearea unei copii a pokemonNamefuncția este capabil de a apela logPokemon(), deși nu a fost pe obiect pokemon inițial. Acesta va recunoaște acum proprietățile sale (Pika și Chu) și metodele sale.

și lucru rece este, după ce ne-am lega() o valoare putem folosi funcția la fel ca a fost orice altă funcție normală. Am putea chiar să actualizăm funcția pentru a accepta parametrii și să le transmitem așa:

call(), apply()

documentele oficiale pentru apel() spun: call() metoda apelează o funcție cu un dat this valoare și argumente furnizate individual.

ce înseamnă asta, este că putem apela orice funcție, și specificați în mod explicit ceea ce this ar trebui să referință în cadrul funcției de asteptare. Într-adevăr similar cu metoda bind()! Acest lucru ne poate salva cu siguranță de la scrierea codului hacky (chiar dacă suntem cu toții încă hackerzzz).

principalele diferențe dintrebind() șicall() este căcall() metoda:

  1. acceptă și parametri suplimentari
  2. execută funcția la care a fost apelată imediat.
  3. metodacall() nu face o copie a funcției pe care este apelată.

call() șiapply() servesc exact același scop. Singura diferență între modul în care funcționează este că call() se așteaptă ca toți parametrii să fie trecuți individual, în timp ce apply() se așteaptă la o serie a tuturor parametrilor noștri. Exemplu:

notă care se aplică acceptă și matrice, și apel așteaptă fiecare param individual.

aceste construit în metode, care există pe fiecare funcție JS poate fi foarte util. Chiar dacă nu sfârșesc prin a le folosi în programarea de zi cu zi, veți rula în continuare în ea de multe ori atunci când citesc codul altor popoare.

Dacă aveți întrebări, ca întotdeauna, contactați prin Instagram