Ora vediamo cosa succede quando riportiamo la parola chiave nel mix.
Ecco dove le cose si divertono nel primo blocco di codice.
Abbiamo un metodo chiamato Say hi che è una funzione che chiama un timeout impostato e cancella i log
in modo che la stringa alta concatenata con il valore della proprietà first name sulla parola chiave.
Questo prima di vedere cosa restituisce questo codice.
Metti in pausa il video e pensa a quale parola chiave si riferisce a questo.
Torna alle prime due regole è la parola chiave questo nel contesto globale.
O è la parola chiave questo all'interno di un oggetto dichiarato.
Potresti pensare che sia chiaramente all'interno di un oggetto dichiarato e hai ragione.
Tuttavia, poiché il timeout impostato viene chiamato in un secondo momento, la parola chiave non si
riferisce all'oggetto padre.
In realtà si riferisce all'oggetto globale.
Questo è molto complicato e fa inciampare molti principianti.
Ripercorriamolo di nuovo poiché il timeout impostato viene chiamato in un secondo momento.
il timeout impostato sia un metodo sull'oggetto della finestra anche se è definito all'interno dell'oggetto freddo
quando viene dichiarato che il contesto in cui viene eseguita la funzione è in realtà il globale contesto.
L'oggetto a cui è collegato è in realtà la finestra proprio come abbiamo detto prima che
Quindi, come possiamo risolvere questo problema poiché stiamo perdendo il contesto corretto della parola chiave.
Questo dovremmo esplicitamente impostare, ma vogliamo che la parola chiave a cui fare riferimento.
Possiamo farlo usando call e apply ma dal momento che vogliamo chiamare la funzione in un momento
successivo non vogliamo usare nessuno di questi.
Ricorda che call e apply invocano immediatamente la funzione.
In tal modo, ciò annullerebbe lo scopo di un determinato intervallo di tempo che è necessario per eseguire una funzione
in un momento successivo.
Quindi, questo ci lascia legati nel secondo blocco di codice che possiamo risolvere il nostro problema passando come primo
parametro al metodo di bind.
Il valore che vogliamo che la parola chiave a cui ci riferiamo sia totalmente confuso sul motivo per cui
passiamo la parola chiave come primo parametro.
Ma fai un passo indietro e chiediti all'interno dell'oggetto codice a cosa si riferisce la parola chiave a cui questo fa riferimento.
Beh, in realtà si riferisce all'oggetto di culto stesso.
parola chiave come ciò che vogliamo quando viene chiamata la funzione all'interno del timeout impostato invece della
parola chiave che puoi passare nella variabile chiamata al metodo bind e otterrai lo stesso risultato.
Quindi leghiamo il valore corretto della
Ma più comunemente vedrai il codice che usa la parola chiave this.
Per ricapitolare abbiamo visto che il metodo bind restituisce una definizione di funzione diversa da call a apply
ed è molto utile per impostare il valore della parola chiave this quando non si conoscono tutti i
valori per gli argomenti da passare alla funzione o quando si lavora con codice asincrono.
Un'ultima nota.
Il materiale che stiamo trattando qui è abbastanza avanzato.
produzione e ti verrà chiesto nelle interviste se sei ancora abbastanza incasinato con questo esempio.
Ma se stai cercando di diventare uno sviluppatore javascript professionale, questo è il tipo di codice che vedrai nelle
basi del codice di
Non ti preoccupare
Ho insegnato molto questo argomento ed è sempre qualcosa che confonde le persone che inizialmente cercano di percorrere
ogni linea di codice e assicurati di digitare gli esempi nella console di Chrome per vedere cosa sta succedendo.
Come sempre sentitevi liberi di fare quelle domande.
Siamo qui per aiutarti a imparare nel prossimo video.
Copriremo brevemente l'ultima regola per determinare la parola chiave così sia