Javascript: call (), apply () e bind ()
call (), apply () e bind () — una nuova speranza
Fino ad ora abbiamo trattato le funzioni come oggetti che sono composti da un nome (opzionale, può anche essere una funzione anonima) e il codice che esegue quando viene invocato. Ma questa non è tutta la verità. Come una persona che ama la verità, devo farvi sapere che una funzione in realtà sembra più vicino alla seguente immagine:
che Cosa è questo??????? Non preoccuparti! Ora passerò attraverso questi 3 metodi simili che appaiono su ogni funzione con esempi. Rallegrati!
bind ()
I documenti ufficiali dicono: Il metodobind()
crea una nuova funzione che, quando viene chiamata, ha la parola chiavethis
impostata sul valore fornito. (In realtà parla di ancora più cose, ma lo lasceremo per un’altra volta :))
Questo è estremamente potente. Ci consente di definire esplicitamente il valore di this
quando si chiama una funzione. Diamo un’occhiata a coooooode:
Scomponiamolo. Quando usiamo ilbind()
metodo:
- il motore JS sta creando una nuova
pokemonName
istanza e associazionepokemon
come variabilethis
. È importante capire che copia la funzione pokemonName. - Dopo aver creato una copia della funzione
pokemonName
è in grado di chiamarelogPokemon()
, anche se inizialmente non era sull’oggetto pokemon. Ora riconosce le sue proprietà (Pika e Chu) e i suoi metodi.
E la cosa interessante è che, dopo aver bind() un valore, possiamo usare la funzione proprio come se fosse qualsiasi altra funzione normale. Potremmo anche aggiornare la funzione per accettare i parametri e passarli in questo modo:
call(), si applicano()
La documentazione ufficiale per call() dire: call()
metodo chiama una funzione con un dato this
valore e gli argomenti forniti individualmente.
Ciò significa che possiamo chiamare qualsiasi funzione e specificare esplicitamente qualethis
dovrebbe fare riferimento all’interno della funzione chiamante. Molto simile al metodobind()
! Questo può sicuramente salvarci dalla scrittura di codice hacky (anche se siamo tutti ancora hackerzzz).
Le principali differenze tra bind()
e call()
che il call()
metodo:
- Accetta ulteriori parametri
- Esegue la funzione è stata chiamata subito.
- Il metodo
call()
non crea una copia della funzione su cui viene chiamata.
call()
e apply()
servono esattamente allo stesso scopo. L’unica differenza tra il modo in cui funzionano è che call() si aspetta che tutti i parametri vengano passati individualmente, mentre apply() si aspetta una serie di tutti i nostri parametri. Esempio:
Questi metodi incorporati, che esistono su ogni funzione JS possono essere molto utili. Anche se non si finisce per usarli nella vostra programmazione giorno per giorno, si continua a correre in esso spesso durante la lettura di altri popoli codice.
Se avete domande, come sempre, raggiungere via Instagram ❤
Leave a Reply