Nodejsの中のthis
2860 ワード
以下の内容はすべてnodejsの中のthisに関してjavascriptの中のthisではなくて、nodejsの中のthisとブラウザの中でjavascriptの中のthisは違います.
全体の中のthis
関数の中のthis
信じないなら、下のコードを見て証明できます.
コンストラクタのthis
私たちは今グローバルの中のthisについて話してもいいです.全体の中のthisといえば、Nodejsの中のスコープと関係があります.Nodejsの中のスコープに関する情報を知りたいなら、Nodejsの中のスコープ問題を検討してみてもいいです.この文章
本題に戻りますが、全体のthisはmodule.exportsを指しています.
全体の中のthis
console.log(this); {}
this.num = 10;
console.log(this.num); 10
console.log(global.num); undefined
全体のthisはデフォルトでは空のオブジェクトです.そしてグローバルの中でthisはglobalオブジェクトと何の関係もないですが、全体の中のthisは一体誰を指していますか?この章の後半部分について説明します.関数の中のthis
function fn(){
this.num = 10;
}
fn();
console.log(this); {}
console.log(this.num); undefined
console.log(global.num); 10
関数の中でthisが指すのはglobalオブジェクトで、全体の中のthisとは同一のオブジェクトではなく、簡単に言えば、関数の中でthisによって定義される変数はglobalに属性を追加するのと同じです.信じないなら、下のコードを見て証明できます.
function fn(){
function fn2(){
this.age = 18;
}
fn2();
console.log(this); global
console.log(this.age); 18
console.log(global.age); 18
}
fn();
はい、関数の中でthisがglobalを指しています.コンストラクタのthis
function Fn(){
this.num = 998;
}
var fn = new Fn();
console.log(fn.num); 998
console.log(global.num); undefined
構造関数でthisが指し示すのは、globalではなくその例です.私たちは今グローバルの中のthisについて話してもいいです.全体の中のthisといえば、Nodejsの中のスコープと関係があります.Nodejsの中のスコープに関する情報を知りたいなら、Nodejsの中のスコープ問題を検討してみてもいいです.この文章
本題に戻りますが、全体のthisはmodule.exportsを指しています.
this.num = 10;
console.log(module.exports); {num:10}
console.log(module.exports.num);
どうして全体の局面の中でthisはmodule.exportsを指すことができて、それでは先にもっと多くmodule.exportに関しての知識を理解しなければなりません.しばらくはここを理解して、後でmoduleまで話をする機会があります.