1
00:00:00,570 --> 00:00:03,970
Maintenant, voyons ce qui se passe quand nous ramener le mot-clé ce retour dans le mélange.

2
00:00:04,170 --> 00:00:06,980
Voici où les choses s'amusent dans le premier bloc de code.

3
00:00:07,020 --> 00:00:17,740
Nous avons une méthode appelée Say hi qui est une fonction qui appelle un timeout défini et annulé les logs de la chaîne high concaténée avec la valeur de la propriété first name sur le mot-clé.

4
00:00:17,820 --> 00:00:21,100
Ceci avant que nous voyons ce que ce code renvoie.

5
00:00:21,150 --> 00:00:24,740
Pause la vidéo et de réfléchir à ce que le mot-clé que cela se réfère.

6
00:00:24,780 --> 00:00:28,550
Revenir aux deux premières règles est le mot-clé ceci dans le contexte global.

7
00:00:28,710 --> 00:00:32,280
Ou est le mot clé ceci à l'intérieur d'un objet déclaré.

8
00:00:32,280 --> 00:00:36,480
Vous pourriez penser qu'il est clairement à l'intérieur d'un objet déclaré et vous avez raison.

9
00:00:36,750 --> 00:00:44,310
Toutefois, puisque le timeout défini est appelé à un moment ultérieur, le mot clé this ne fait pas référence à l'objet parent.

10
00:00:44,310 --> 00:00:47,100
Il fait référence à l'objet global.

11
00:00:47,100 --> 00:00:50,060
C'est très difficile et les voyages beaucoup de débutants.

12
00:00:50,160 --> 00:00:55,470
Donc, nous allons marcher à travers elle à nouveau, car le délai d'attente est appelé à un moment ultérieur dans le temps.

13
00:00:55,590 --> 00:01:13,960
L'objet auquel il est rattaché est en fait la fenêtre comme nous l'avons dit avant de définir le temps d'arrêt est une méthode sur l'objet fenêtre même si elle est définie à l'intérieur de l'objet froid quand il est déclaré le contexte dans lequel la fonction est exécutée est effectivement le global le contexte.

14
00:01:13,980 --> 00:01:18,000
Alors, comment pouvons-nous résoudre ce problème car nous perdons le bon contexte du mot-clé.

15
00:01:18,010 --> 00:01:22,220
Nous devrions définir explicitement, mais nous voulons que le mot-clé de ce faire référence.

16
00:01:22,590 --> 00:01:30,510
Nous pouvons le faire en utilisant l'appel et l'application, mais puisque nous voulons appeler la fonction à un moment ultérieur, nous ne voulons pas utiliser l'un ou l'autre de ceux-ci.

17
00:01:30,570 --> 00:01:33,600
N'oubliez pas que l'appel et l'application invoquent la fonction immédiatement.

18
00:01:33,660 --> 00:01:39,620
Ce faisant, cela annulerait le but d'un temps de sortie défini qui est pour l'exécution d'une fonction à un moment ultérieur.

19
00:01:39,960 --> 00:01:47,700
Donc, cela nous laisse avec bind dans le deuxième bloc de code, nous pouvons résoudre notre problème en passant comme le premier paramètre de la méthode bind.

20
00:01:47,700 --> 00:01:56,010
La valeur que nous voulons que le mot-clé de ce faire référence à vous peut être totalement confus quant à pourquoi nous passons dans le mot-clé ce que le premier paramètre.

21
00:01:56,160 --> 00:02:02,420
Mais prenez un pas en arrière et demandez-vous à l'intérieur de l'objet de code ce que le mot-clé ce faire référence.

22
00:02:02,850 --> 00:02:06,140
Eh bien, il fait référence à l'objet culte lui-même.

23
00:02:06,240 --> 00:02:20,160
Donc, nous lier la valeur correcte du mot-clé que ce soit ce que nous voulons lorsque la fonction à l'intérieur de la mise hors délai est appelé au lieu du mot-clé ce que vous pouvez passer dans la variable appelée à la méthode bind et vous obtiendrez le même résultat.

24
00:02:20,400 --> 00:02:24,790
Mais plus communément, vous verrez le code qui utilise le mot-clé this.

25
00:02:24,900 --> 00:02:41,060
Pour récapituler, nous avons vu que la méthode bind renvoie une définition de fonction contrairement à call a apply et est très utile pour définir la valeur du mot-clé this lorsque nous ne connaissons pas toutes les valeurs pour les arguments à passer à la fonction ou lorsque nous travaillons avec Code asynchrone.

26
00:02:41,070 --> 00:02:42,300
Une dernière note.

27
00:02:42,390 --> 00:02:44,960
Le matériel que nous couvrons ici est assez avancé.

28
00:02:45,150 --> 00:02:54,920
Mais si vous cherchez à devenir un développeur javascript professionnel, c'est le genre de code que vous verrez dans les bases de code de production ainsi que de se faire interroger dans les entrevues si vous êtes encore trébuché avec cet exemple.

29
00:02:54,930 --> 00:02:55,710
Ne t'inquiète pas.

30
00:02:55,830 --> 00:03:05,580
J'ai enseigné ce sujet beaucoup et c'est toujours quelque chose qui confond les gens d'abord essayez de marcher à travers chaque ligne de code et assurez-vous que vous tapez les exemples dans la console chrome pour voir ce qui se passe.

31
00:03:05,760 --> 00:03:07,950
Comme toujours, n'hésitez pas à poser ces questions.

32
00:03:07,950 --> 00:03:10,600
Nous sommes là pour vous aider à apprendre dans la prochaine vidéo.
