Maintenant, voyons ce qui se passe quand nous ramener le mot-clé ce retour dans le mélange.
Voici où les choses s'amusent dans le premier bloc de code.
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é.
Ceci avant que nous voyons ce que ce code renvoie.
Pause la vidéo et de réfléchir à ce que le mot-clé que cela se réfère.
Revenir aux deux premières règles est le mot-clé ceci dans le contexte global.
Ou est le mot clé ceci à l'intérieur d'un objet déclaré.
Vous pourriez penser qu'il est clairement à l'intérieur d'un objet déclaré et vous avez raison.
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.
Il fait référence à l'objet global.
C'est très difficile et les voyages beaucoup de débutants.
Donc, nous allons marcher à travers elle à nouveau, car le délai d'attente est appelé à un moment ultérieur dans le temps.
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.
Alors, comment pouvons-nous résoudre ce problème car nous perdons le bon contexte du mot-clé.
Nous devrions définir explicitement, mais nous voulons que le mot-clé de ce faire référence.
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.
N'oubliez pas que l'appel et l'application invoquent la fonction immédiatement.
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.
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.
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.
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.
Eh bien, il fait référence à l'objet culte lui-même.
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.
Mais plus communément, vous verrez le code qui utilise le mot-clé this.
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.
Une dernière note.
Le matériel que nous couvrons ici est assez avancé.
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.
Ne t'inquiète pas.
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.
Comme toujours, n'hésitez pas à poser ces questions.
Nous sommes là pour vous aider à apprendre dans la prochaine vidéo.