1
00:00:00,570 --> 00:00:03,970
Agora, vamos ver o que acontece quando trazemos a palavra-chave para a mistura.

2
00:00:04,170 --> 00:00:06,980
Aqui é onde as coisas ficam divertidas no primeiro bloco de código.

3
00:00:07,020 --> 00:00:12,810
Nós temos um método chamado Say hi, que é uma função que chama um timeout definido e cancelou

4
00:00:12,810 --> 00:00:17,740
logs a string alta concatenada com o valor da propriedade do primeiro nome na palavra-chave.

5
00:00:17,820 --> 00:00:21,100
Isso antes de ver o que esse código retorna.

6
00:00:21,150 --> 00:00:24,740
Faça uma pausa no vídeo e pense em qual é a palavra-chave a que se refere.

7
00:00:24,780 --> 00:00:28,550
Volte para as duas primeiras regras é a palavra-chave no contexto global.

8
00:00:28,710 --> 00:00:32,280
Ou é a palavra-chave dentro de um objeto declarado.

9
00:00:32,280 --> 00:00:36,480
Você pode estar pensando que está claramente dentro de um objeto declarado e você está certo.

10
00:00:36,750 --> 00:00:42,960
No entanto, uma vez que o tempo limite estabelecido é chamado em um ponto posterior, a palavra-chave não se

11
00:00:42,960 --> 00:00:44,310
refere ao objeto pai.

12
00:00:44,310 --> 00:00:47,100
Ele realmente se refere ao objeto global.

13
00:00:47,100 --> 00:00:50,060
Isso é muito complicado e percorre muitos iniciantes.

14
00:00:50,160 --> 00:00:55,470
Então, vamos passar por isso novamente, uma vez que o tempo limite definido é chamado em um ponto posterior.

15
00:00:55,590 --> 00:01:01,350
o tempo limite, é um método no objeto da janela, mesmo que seja definido dentro do

16
00:01:01,350 --> 00:01:07,920
objeto frio quando é declarado o contexto em que a função é executada é realmente o global contexto.

17
00:01:07,920 --> 00:01:13,960
O objeto a que está anexado é na verdade a janela, como dissemos antes de definir

18
00:01:13,980 --> 00:01:18,000
Então, como podemos resolver esse problema, pois estamos perdendo o contexto correto da palavra-chave.

19
00:01:18,010 --> 00:01:22,220
Isso devemos definir explicitamente, mas queremos que a palavra chave a que se referir.

20
00:01:22,590 --> 00:01:27,810
Nós podemos fazer isso usando chamada e aplicar, mas como queremos chamar a função em um

21
00:01:28,260 --> 00:01:30,510
momento posterior, não queremos usar nenhuma dessas.

22
00:01:30,570 --> 00:01:33,600
Lembre-se que ligue e aplique invoque a função de imediato.

23
00:01:33,660 --> 00:01:38,640
Assim, isso seria uma derrota do propósito de um tempo definido que é para executar uma função em

24
00:01:38,640 --> 00:01:39,620
um momento posterior.

25
00:01:39,960 --> 00:01:46,080
Então, isso nos deixa com ligação no segundo bloco de código, podemos resolver nosso problema passando como o primeiro

26
00:01:46,080 --> 00:01:47,700
parâmetro para o método bind.

27
00:01:47,700 --> 00:01:53,640
O valor que queremos que a palavra-chave que se refere a você possa estar totalmente confuso quanto ao motivo pelo

28
00:01:53,640 --> 00:01:56,010
qual passamos a palavra-chave como o primeiro parâmetro.

29
00:01:56,160 --> 00:02:01,950
Mas dê um passo para trás e pergunte-se dentro do objeto de código ao qual se refere a palavra-chave.

30
00:02:02,850 --> 00:02:06,140
Bem, ele realmente se refere ao próprio objeto de culto.

31
00:02:06,240 --> 00:02:12,450
da palavra-chave para ser o que queremos quando a função dentro do tempo limite estabelecido é chamada em vez

32
00:02:12,450 --> 00:02:18,150
da palavra-chave que você pode passar na variável chamada ao método bind e você obterá o mesmo resultado.

33
00:02:18,150 --> 00:02:20,160
Então, estamos vinculando o valor correto

34
00:02:20,400 --> 00:02:24,790
Mas, mais comumente, você verá o código que usa a palavra-chave.

35
00:02:24,900 --> 00:02:30,600
Para recapitular, vimos que o método bind retorna uma definição de função diferente de chamada e

36
00:02:30,600 --> 00:02:36,300
é muito útil para definir o valor da palavra-chave quando não conhecemos todos os valores de

37
00:02:36,300 --> 00:02:41,060
argumentos para passar para a função ou quando estamos trabalhando com código assíncrono.

38
00:02:41,070 --> 00:02:42,300
Uma nota final.

39
00:02:42,390 --> 00:02:44,960
O material que estamos abrindo aqui é bastante avançado.

40
00:02:45,150 --> 00:02:48,900
bem como será perguntado sobre as entrevistas se você ainda estiver bastante perturbado com este exemplo.

41
00:02:48,900 --> 00:02:53,910
Mas se você está procurando tornar-se um desenvolvedor javascript profissional, esse é o tipo de código que você verá nas bases

42
00:02:53,910 --> 00:02:54,920
do código de produção,

43
00:02:54,930 --> 00:02:55,710
Não se preocupe.

44
00:02:55,830 --> 00:03:00,570
Eu ensinei muito esse tópico e sempre é algo que confunde as pessoas na primeira tentativa de caminhar por

45
00:03:00,600 --> 00:03:05,580
cada linha de código e certifique-se de digitar os exemplos no console cromado para ver o que está acontecendo.

46
00:03:05,760 --> 00:03:07,950
Como sempre, sinta-se à vontade para fazer essas perguntas.

47
00:03:07,950 --> 00:03:10,600
Estamos aqui para ajudá-lo a aprender no próximo vídeo.

48
00:03:10,740 --> 00:03:15,060
Vamos abranger brevemente a última regra para determinar a palavra-chave, então
