Nodeのグローバルオブジェクトとグローバル変数

9566 ワード

この文章は主に前の文章に対する拡張である.
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に関する記事を読むことができます.ずっと更新します.問題がありましたら、下の方にメモしてください.