Bedeutung von "dieses" in node.js Module und Funktionen

Habe ich eine JavaScript-Datei, die geladen wird, indem require.

//loaded by require()

var a = this; //"this" is an empty object
this.anObject = {name:"An object"};

var aFunction = function() {
    var innerThis = this; //"this" is node global object
};

aFunction();

(function(anyParameter){
    console.log(anyParameter.anObject);
})(
    this //"this" is same having anObject. Not "global"
);

Meine Frage ist: this im var a = this; ist ein leeres Objekt in der Erwägung, dass this Anweisungen in Funktionen sind Schatten node.js Globale Objekt. Ich weiß this Schlüsselwort verschiedenen Funktionen, aber ich konnte nicht verstehen, warum die ersten this ist nicht gleich global und this Funktionen gleich global.

Wie funktioniert node.js injizieren global zu this in Funktion Bereiche, und warum es nicht injizieren, um die Modul-Bereich?

Der Wert von this ist bestimmt als eine Kern-Funktion der JavaScript-Sprache selbst (obwohl NodeJS kann, setzen Sie den Wert über die Sprachelemente von JavaScript). Möglicherweise müssen Sie Lesen, bis auf einige this docs. Beachten Sie, dass die docs in der Regel davon ausgehen, das JS ist im browser ausgeführt wird, so das "Globale Objekt" wird window statt der NodeJS-global-Objekt, aber die Konzepte sind die gleichen. Einige weitere relevante Dokumente sind NodeJS ist this docs.
Haben Sie einen Blick auf diese Frage.
Ich weiß, warum sich zwei this Werte unterschiedlich sind. Meine Frage ist, warum und wie node.js injiziert global zu this im Funktions-Bereich, nicht auf den äußeren Umfang. Es kann Spritzen global sowohl this'es zu halten Sie anders.
Wie nennt man aFunction?
Dokument, das Sie zeigte, gab viel mehr Einblick über this Dank. Wie ich verstanden habe this wird anders, je nachdem wo die Funktion aufgerufen wird. Aber immer noch konnte ich nicht herausfinden, warum und wie node.js injiziert global in unterschiedlicher Weise. Hinweis: ich habe call für aFunction wie wenn ich debuggt.

InformationsquelleAutor Gökçer Gökdal | 2014-03-31

Schreibe einen Kommentar