Articles

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:

Usando ilbind() method on line 14.

Scomponiamolo. Quando usiamo ilbind() metodo:

  1. il motore JS sta creando una nuovapokemonNameistanza e associazionepokemoncome variabilethis. È importante capire che copia la funzione pokemonName.
  2. Dopo aver creato una copia della funzionepokemonName è 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:

  1. Accetta ulteriori parametri
  2. Esegue la funzione è stata chiamata subito.
  3. Il metodocall() 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:

Si noti che apply accetta e array e call si aspetta ogni parametro individualmente.

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 ❤