Ceci est une question d'entretien et je suis très curieux de la réponse.
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log("outer func: this.foo = " + this.foo);
console.log("outer func: self.foo = " + self.foo);
(function() {
console.log("inner func: this.foo = " + this.foo);
console.log("inner func: self.foo = " + self.foo);
}());
}
};
myObject.func();
4 Réponses :
Voici la sortie de la console:
outer func: this.foo = bar outer func: self.foo = bar inner func: this.foo = undefined inner func: self.foo = bar
Réponse:
"outer func: this.foo = bar" "outer func: self.foo = bar" "inner func: this.foo = undefined" "inner func: self.foo = bar"
La sortie sera la suivante: car ife (expression de la fonction immédiatement invoqué) sera appelée dans le contexte de l'objet global (fenêtre dans les navigateurs), donc "ceci" sera un objet global à l'intérieur de la vie et Lorsque vous essayez d'accéder à "this.foo" à l'intérieur de ife, il ne reviendra pas non défini car il n'y a pas de propriété nommée foo de l'objet global. p> La sortie du code ci-dessus sera la suivante: P> outer func: this.foo = bar
outer func: self.foo = bar
inner func: this.foo = undefined
inner func: this.xyz = Hi There
inner func: self.foo = bar
inner func: this = [object Window]
Console LOGS:
outer func: this.foo = bar outer func: self.foo = bar inner func: this.foo = undefined inner func: self.foo = bar
Avez-vous essayé de coller ce code dans la console et de l'exécuter?