Nodeのグローバルオブジェクトとグローバル変数
9566 ワード
この文章は主に前の文章に対する拡張である.
utilオブジェクト
Node環境が既にインストールされているという前提で、
1.inheits
この方法はプロトタイプチェーン間の継承(すなわちJavaScriptの継承)を実現した.
この方法は任意のオブジェクトを文字列形式に変換するもので、通常はデバッグに使用されます.第1のパラメータは必須であり、いずれかのオブジェクトは、第1の後ろに加えて任意のパラメータであり、第2のパラメータ
eventsモジュール
Nodeにおける非同期I/O動作のすべては、イベント機構を使用して実装され、Nodeにおける多くのオブジェクトは
ほとんどの場合、私たちは直接EventEmitterを使わず、対象の中でそれを継承します.fs、net、httpを含め、イベント応答をサポートするコアモジュールはすべてEventEmitterのサブクラスです.なぜこうしますか?まず、ある実体機能を持つオブジェクトがイベントの意味に合うように実現します.イベントの傍受と発射は一つのオブジェクトの方法.次にJavaScriptのオブジェクトメカニズムは、プロトタイプに基づいています.複数の引き継ぎをサポートしています.EventEmitterを引き継いで、オブジェクトの元の継承関係を混乱させません.具体的な例を見てみます.
utilオブジェクト
Node環境が既にインストールされているという前提で、
util
で定義された方法を使用すると、require('util')
だけでよい.utiはutilityの略語です.このutil
モジュールの設計は主にNode内部APIの需要を満たすためである.二つの比較的重要なものを紹介します.1.inheits
この方法はプロトタイプチェーン間の継承(すなわちJavaScriptの継承)を実現した.
var util = require('util');
function base(){
this.name = 'helios';
this.sayName=function(){
console.log(this.name);
}
}
base.prototype.sayHello=function(){
console.log('hello '+this.name);
};
function sub(){
this.name='shangyilong';
this.age = 21;
}
// util inherits sub base
util.inherits(sub,base);
var a = new sub();
a.sayHello();
2.inspect(util.inspect(object[,options])この方法は任意のオブジェクトを文字列形式に変換するもので、通常はデバッグに使用されます.第1のパラメータは必須であり、いずれかのオブジェクトは、第1の後ろに加えて任意のパラメータであり、第2のパラメータ
[showHidden]
がデフォルトである場合はfalse
であり、true
に設定されている場合は、このオブジェクト
および
−第3のパラメータdepth
は、このオブジェクトの何層の属性を印刷したかを示すことができる.この方法は複雑な構造のオブジェクトに対して非常に効果的であり、デフォルトでは2つの層が印刷され、無限の再帰的印刷を望むならば、すべての属性はnull
に設定され得る.色Colorsデフォルトの場合、false
はすべての額の属性が一つの色であることを示しています.true
に設定されているなら、コードのANSI
に従ってコードを印刷した下でコードを見てみます.var util = require('util');
function base(){
this.name = 'helios';
this.sayName=function(){
console.log(this.name);
}
this.toString=function () {
console.log("hello");
}
}
var a = new base();
console.log(util.inspect(util, { showHidden: true, depth: null ,colors: true , customInspect:false}));
//
//console.log(util.inspect(a,true,null,true,false));
- 3.
```javascript
util.log("shagnyilong");
// output 9 May 19:03:05 - shangyilong
<div class="se-preview-section-delimiter"></div>
上記以外にも、文字列が正則に合っているかどうかを確認することができます.すべての形式は公式文書を参照することができます.ここでは説明を省略します.eventsモジュール
Nodeにおける非同期I/O動作のすべては、イベント機構を使用して実装され、Nodeにおける多くのオブジェクトは
events.EventEmitter
の例である.例えば、fsモジュールにおいてファイルを開くことと読み取ることは、対応するイベントを分けることであり、Nodeはeventsを通じてイベントメカニズムを実現し、このモジュールには唯一のクラスがあります.EventEmitter
.EventEmitterのコアはイベント送信とイベントモニター機能のパッケージです.イベントごとに、EventEmitterはいくつかのイベントモニターをサポートします.イベント送信時に、このイベントに登録されたイベントモニターが順次呼び出しられ、イベントパラメータがコールバック関数パラメータとして渡される.通常のAPIの方法紹介:(1)Event Emitter.on(event,listener)は指定されたイベントのためにモニターを登録し、文字列eventと一つのコールバック関数listener(2)Event Emitter.emiit(event,arg 1)、[arg 2].送信イベントを受け付け、幾つかのオプションのパラメータをイベントモニター3のEvent(Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.イベントを指定するために1回のモニターを登録します.つまり、モニターは最大一回しか起動しません.トリガしたらすぐにモニターを解除します.(4)EventEmitter.removeListener(event,listener)指定されたイベントのいずれかのモニターを削除します.listenerはこのイベントに登録されたモニターでなければなりません.(5)EventEmitter.removeAllListeners(event)は、イベントのすべてのモニターを削除し、イベントを指定すると、指定されたイベントのすべてのモニターを削除します.次のケースを見ます. , , :
[util ](https://nodejs.org/api/util.html)
## events
Node I/O ,Node `events.EventEmitter` 。 fs ,Node events , :`EventEmitter`.
EventEmitter . ,EventEmitter 。 , , 。
API :
(1)EventEmitter.on(event,listener) , event listener
(2)EventEmitter.emit(event,[arg1],[arg2]....) event ,
(3)EventEmitter.once(event,listener) , , 。
(4)EventEmitter.removeListener(event,listener) ,listener 。
(5)EventEmitter.removeAllListeners([event]) , event, 。
:
```javascript var events=require('events'); var emitter=new events.EventEmitter(); emitter.on('someEvent',function(arg1,arg2){ console.log('Listener1',arg1,arg2); }); emitter.on('someEvent',function(arg1,arg2){ console.log('Listener2',arg1,arg2); }); // someEvent emitter.emit('someEvent','marico',1991); <div class="se-preview-section-delimiter"></div>
eventsの継承についてほとんどの場合、私たちは直接EventEmitterを使わず、対象の中でそれを継承します.fs、net、httpを含め、イベント応答をサポートするコアモジュールはすべてEventEmitterのサブクラスです.なぜこうしますか?まず、ある実体機能を持つオブジェクトがイベントの意味に合うように実現します.イベントの傍受と発射は一つのオブジェクトの方法.次にJavaScriptのオブジェクトメカニズムは、プロトタイプに基づいています.複数の引き継ぎをサポートしています.EventEmitterを引き継いで、オブジェクトの元の継承関係を混乱させません.具体的な例を見てみます.
### events
EventEmitter, 。 fs、net、 http , EventEmitter 。
? :
, , 。
JavaScript , , EventEmitter 。
:
```javascript
const util = require('util');
var events=require('events');
var emitter=new events.EventEmitter();
function MyEventEmitter() {
// `events`this
events.call(this);
}
// `EventEmitter`
util.inherits(MyEventEmitter, events);
// MyEventEmitter
var a = new MyEventEmitter();
//
a.on('amo',function(){
console.log(8);
});
これはNodeのシリーズです.この欄で他のNodeに関する記事を読むことができます.ずっと更新します.問題がありましたら、下の方にメモしてください.