Node.js學習(9)----核心模組

來源:互聯網
上載者:User

 全域對象;
 常用工具;
 事件機制;
 檔案系統訪問;
 HTTP 伺服器與用戶端。

 在最外層定義的變數;
 全域對象的屬性;
 隱式定義的變數(未定義直接賦值的變數)。
當你定義一個全域變數時,這個變數同時也會成為全域對象的屬性,反之亦然。需要注意的是,在 Node.js 中你不可能在最外層定義變數,因為所有使用者代碼都是屬於當前模組的,而模組本身不是最外層上下文。

的對象,提供了一個與作業系統的簡單介面。通常在你寫本地命令列程式的時候,少不了要和它打交道。下面介紹 process 對象的一些最常用的成員方法。

 process.stdin是標準輸入資料流,初始時它是被暫停,要想從標準輸入讀取資料,你必須恢複流,並手動編寫流的事件響應函數。

process.stdin.resume();process.stdin.on('data', function(data) {process.stdout.write('read from console: ' + data.toString());});
 process.nextTick(callback)的功能是為事件迴圈設定一項任務,Node.js 會在下次事件迴圈調響應時調用 callback。

console.log('Hello world');

 console.trace():向標準錯誤流輸出當前的調用棧。

var util=require('util');function Base(){this.name='base';this.base=1991;this.sayHello=function(){console.log('Hello '+this.name);};}//這裡是Base原型定義的函數Base.prototype.showName=function(){console.log(this.name);};function Sub(){this.name='Sub';}util.inherits(Sub,Base);var objBase=new Base();objBase.showName();objBase.sayHello();console.log(objBase);var objSub=new Sub();objSub.showName();//objSub.sayHello();console.log(objSub);
我們定義了一個基礎對象 Base 和一個繼承自 Base 的 Sub,Base 有三個在建構函式內定義的屬性和一個原型中定義的函數,通過 util.inherits 實現繼承。運行結果如下:

Hello base
{ name: 'base', base: 1991, sayHello: [Function] }
Sub
{ name: 'Sub' }

為字串的方法,通常用於調試和錯誤輸出。它至少接受一個參數 object,即要轉換的對象。
showHidden 是一個選擇性參數,如果值為 true,將會輸出更多隱藏資訊。
depth 表示最大遞迴的層數,如果對象很複雜,你可以指定層數以控制輸出資訊的多少。如果不指定depth,預設會遞迴2層,指定為 null 表示將不限遞迴層數完整遍曆對象。
如果color 值為 true,輸出格式將會以 ANSI 顏色編碼,通常用於在終端顯示更漂亮的效果。
特別要指出的是,util.inspect 並不會簡單地直接把對象轉換為字串,即使該對象定義了 toString 方法也不會調用。

var util=require('util');function Person(){this.name='MrGe';this.toString=function(){return this.name;};}var obj=new Person();console.log(util.inspect(obj));console.log(util.inspect(obj,true));
結果輸出:

{ name: 'MrGe',
  toString: 
   { [Function]
     [length]: 0,
     [name]: '',
     [arguments]: null,
     [caller]: null,
     [prototype]: { [constructor]: [Circular] } } }

為回呼函數參數傳遞。

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);});emitter.emit('someEvent','Tome',1234567);
運行結果:

listener2 Tome 1234567

 EventEmitter.on(event, listener) 為指定事件註冊一個監聽器,接受一個字串 event 和一個回呼函數 listener。
 EventEmitter.emit(event, [arg1], [arg2], [...]) 發射 event 事件,傳遞若干選擇性參數到事件監聽器的參數表。
 EventEmitter.once(event, listener) 為指定事件註冊一個單次監聽器,即監聽器最多隻會觸發一次,觸發後立刻解除該監聽器。

var events = require('events');var emitter = new events.EventEmitter();emitter.emit('error');
3.3、繼承 EventEmitter

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.