1
00:00:00,570 --> 00:00:03,970
Ora vediamo cosa succede quando riportiamo la parola chiave nel mix.

2
00:00:04,170 --> 00:00:06,980
Ecco dove le cose si divertono nel primo blocco di codice.

3
00:00:07,020 --> 00:00:12,810
Abbiamo un metodo chiamato Say hi che è una funzione che chiama un timeout impostato e cancella i log

4
00:00:12,810 --> 00:00:17,740
in modo che la stringa alta concatenata con il valore della proprietà first name sulla parola chiave.

5
00:00:17,820 --> 00:00:21,100
Questo prima di vedere cosa restituisce questo codice.

6
00:00:21,150 --> 00:00:24,740
Metti in pausa il video e pensa a quale parola chiave si riferisce a questo.

7
00:00:24,780 --> 00:00:28,550
Torna alle prime due regole è la parola chiave questo nel contesto globale.

8
00:00:28,710 --> 00:00:32,280
O è la parola chiave questo all'interno di un oggetto dichiarato.

9
00:00:32,280 --> 00:00:36,480
Potresti pensare che sia chiaramente all'interno di un oggetto dichiarato e hai ragione.

10
00:00:36,750 --> 00:00:42,960
Tuttavia, poiché il timeout impostato viene chiamato in un secondo momento, la parola chiave non si

11
00:00:42,960 --> 00:00:44,310
riferisce all'oggetto padre.

12
00:00:44,310 --> 00:00:47,100
In realtà si riferisce all'oggetto globale.

13
00:00:47,100 --> 00:00:50,060
Questo è molto complicato e fa inciampare molti principianti.

14
00:00:50,160 --> 00:00:55,470
Ripercorriamolo di nuovo poiché il timeout impostato viene chiamato in un secondo momento.

15
00:00:55,590 --> 00:01:01,350
il timeout impostato sia un metodo sull'oggetto della finestra anche se è definito all'interno dell'oggetto freddo

16
00:01:01,350 --> 00:01:07,920
quando viene dichiarato che il contesto in cui viene eseguita la funzione è in realtà il globale contesto.

17
00:01:07,920 --> 00:01:13,960
L'oggetto a cui è collegato è in realtà la finestra proprio come abbiamo detto prima che

18
00:01:13,980 --> 00:01:18,000
Quindi, come possiamo risolvere questo problema poiché stiamo perdendo il contesto corretto della parola chiave.

19
00:01:18,010 --> 00:01:22,220
Questo dovremmo esplicitamente impostare, ma vogliamo che la parola chiave a cui fare riferimento.

20
00:01:22,590 --> 00:01:27,810
Possiamo farlo usando call e apply ma dal momento che vogliamo chiamare la funzione in un momento

21
00:01:28,260 --> 00:01:30,510
successivo non vogliamo usare nessuno di questi.

22
00:01:30,570 --> 00:01:33,600
Ricorda che call e apply invocano immediatamente la funzione.

23
00:01:33,660 --> 00:01:38,640
In tal modo, ciò annullerebbe lo scopo di un determinato intervallo di tempo che è necessario per eseguire una funzione

24
00:01:38,640 --> 00:01:39,620
in un momento successivo.

25
00:01:39,960 --> 00:01:46,080
Quindi, questo ci lascia legati nel secondo blocco di codice che possiamo risolvere il nostro problema passando come primo

26
00:01:46,080 --> 00:01:47,700
parametro al metodo di bind.

27
00:01:47,700 --> 00:01:53,640
Il valore che vogliamo che la parola chiave a cui ci riferiamo sia totalmente confuso sul motivo per cui

28
00:01:53,640 --> 00:01:56,010
passiamo la parola chiave come primo parametro.

29
00:01:56,160 --> 00:02:01,950
Ma fai un passo indietro e chiediti all'interno dell'oggetto codice a cosa si riferisce la parola chiave a cui questo fa riferimento.

30
00:02:02,850 --> 00:02:06,140
Beh, in realtà si riferisce all'oggetto di culto stesso.

31
00:02:06,240 --> 00:02:12,450
parola chiave come ciò che vogliamo quando viene chiamata la funzione all'interno del timeout impostato invece della

32
00:02:12,450 --> 00:02:18,150
parola chiave che puoi passare nella variabile chiamata al metodo bind e otterrai lo stesso risultato.

33
00:02:18,150 --> 00:02:20,160
Quindi leghiamo il valore corretto della

34
00:02:20,400 --> 00:02:24,790
Ma più comunemente vedrai il codice che usa la parola chiave this.

35
00:02:24,900 --> 00:02:30,600
Per ricapitolare abbiamo visto che il metodo bind restituisce una definizione di funzione diversa da call a apply

36
00:02:30,600 --> 00:02:36,300
ed è molto utile per impostare il valore della parola chiave this quando non si conoscono tutti i

37
00:02:36,300 --> 00:02:41,060
valori per gli argomenti da passare alla funzione o quando si lavora con codice asincrono.

38
00:02:41,070 --> 00:02:42,300
Un'ultima nota.

39
00:02:42,390 --> 00:02:44,960
Il materiale che stiamo trattando qui è abbastanza avanzato.

40
00:02:45,150 --> 00:02:48,900
produzione e ti verrà chiesto nelle interviste se sei ancora abbastanza incasinato con questo esempio.

41
00:02:48,900 --> 00:02:53,910
Ma se stai cercando di diventare uno sviluppatore javascript professionale, questo è il tipo di codice che vedrai nelle

42
00:02:53,910 --> 00:02:54,920
basi del codice di

43
00:02:54,930 --> 00:02:55,710
Non ti preoccupare

44
00:02:55,830 --> 00:03:00,570
Ho insegnato molto questo argomento ed è sempre qualcosa che confonde le persone che inizialmente cercano di percorrere

45
00:03:00,600 --> 00:03:05,580
ogni linea di codice e assicurati di digitare gli esempi nella console di Chrome per vedere cosa sta succedendo.

46
00:03:05,760 --> 00:03:07,950
Come sempre sentitevi liberi di fare quelle domande.

47
00:03:07,950 --> 00:03:10,600
Siamo qui per aiutarti a imparare nel prossimo video.

48
00:03:10,740 --> 00:03:15,060
Copriremo brevemente l'ultima regola per determinare la parola chiave così sia
