Heim >Web-Frontend >js-Tutorial >Ausführliche Erklärung dazu in Nodejs_node.js

Ausführliche Erklärung dazu in Nodejs_node.js

WBOY
WBOYOriginal
2016-05-16 15:07:561622Durchsuche

Im folgenden Inhalt geht es um dies in NodeJS und nicht um dies in Javascript. Dies in NodeJS unterscheidet sich von dem in Javascript im Browser.

dies

im globalen Maßstab
console.log(this); {}
this.num = 10;
console.log(this.num); 10
console.log(global.num); undefined

Dies ist in der globalen Welt standardmäßig ein leeres Objekt. Und im Globalen hat dies keine Beziehung zum globalen Objekt, also auf wen genau weist das im Globalen hin? Wir werden dies in der zweiten Hälfte dieses Kapitels erklären.

dies

in einer Funktion
function fn(){
  this.num = 10;
}
fn();
console.log(this); {}
console.log(this.num); undefined
console.log(global.num); 10

Dies in der Funktion zeigt auf das globale Objekt, das nicht dasselbe Objekt wie dieses in der Funktion ist. Einfach ausgedrückt entspricht die Variable, die Sie hierdurch in der Funktion definieren, dem Hinzufügen eines Attributs zu global. es ist dasselbe wie global. Das „dies“ in „hat nichts damit zu tun“.

Wenn Sie es nicht glauben, schauen Sie sich den Code unten an, um es zu beweisen.

function fn(){
  function fn2(){
    this.age = 18;
  }
  fn2();
  console.log(this); global
  console.log(this.age); 18
  console.log(global.age); 18
}
fn();

Richtig, in der Funktion zeigt dies auf global.

dies

im Konstruktor
function Fn(){
  this.num = 998;
}
var fn = new Fn();
console.log(fn.num); 998
console.log(global.num); undefined

Im Konstruktor verweist dies auf seine Instanz, nicht auf global.

Wir können jetzt im globalen Kontext darüber sprechen, es hat tatsächlich etwas mit dem Umfang in Nodejs zu tun. Wenn Sie mehr über den Umfang in Nodejs erfahren möchten, können Sie dies lesen Diskussion über den Umfang in Nodejs Scope-Problem. dieser Artikel.

Zurück zum Thema, dies verweist im globalen Kontext auf module.exports.

this.num = 10;
console.log(module.exports); {num:10}
console.log(module.exports.num);

Warum verweist dies auf module.exports in der globalen Ansicht? Dann müssen Sie zunächst mehr über module.exports erfahren. Wir werden zunächst über module.exports sprechen später

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn