1. 程式人生 > >node.js util全域性變數和事件驅動events

node.js util全域性變數和事件驅動events

一、util全域性變數

        1.util.inherits(constructor,superConstructor)             此方法是一個實現物件間原型繼承的函式。javaScript通過原型賦值來實現繼承,細節可參考雲哥JS高階視訊(原型)。              案例看  util/inherits.js             定義了一個基礎物件Base,原型方法為showName,使用Sub物件繼承與Base,可訪問showName方法。             案例:inherits.js
var util=require('util');
function Base(){
	this.name='base';
	this.base=2012;
	this.sayHello=function(){
		console.log('hello '+this.name+' this year is '+this.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);

        2.util.inspect(object,[showHidden],[depth],[colors])            此方法是一個將任意物件轉換為字串的方法,通常用於除錯和錯誤輸出,它至少接受一個引數object。             引數:object,即要轉換的物件.                         showHidden 是一個可選引數,如果值為true,將會輸出更多隱藏資訊.                         depth   標識最大的遞迴的層數,如果物件很複雜,你可以指定層數以控制輸出資訊的多少。預設為2層,指定為null打印出來全部                         如果color為true,輸出格式將會以ANSI顏色編碼,通常用於在終端顯示更漂亮的效果。             案例:inspect.js
var util=require('util');
function Person(){
	this.name='marico';
	this.toString=function(){
		return this.name;
	}
}
var obj=new Person();
console.log(util.inspect(obj));
console.log(util.inspect(obj,true,2,true));


二、事件驅動events

           events是Node.js最重要的模版,原因是Node.js本身架構就是事件式的,而它提供了唯一的介面。所以開成Node.js事件程式設計的基石。events模組不僅用於使用者程式碼與Node.js下層事件迴圈的互動。還幾乎被所有的模組依賴。             1.事件發射器                 events模組只提供了一個物件。events.EventEmitter。EventEmitter的核心就是事件發射與事件監聽器功能的封裝。EventEmitter的每個事件由一個事件或若干個引數組成,事件名是一個字串,通常表達一定的語義。對於每個事件,EventEmitter支援若干個事件監聽器。當事件發射時,註冊到這個事件的事件監聽器被依次呼叫,事件引數作為回撥函式引數傳遞。            案例:events.js
var events=require('events');//獲取nodejs模組
var emitter=new events.EventEmitter();//例項化事件發射器
emitter.on('someEvent',function(arg1,arg2){//為指定事件註冊一個監聽器,接受一個字串someEvent和一個回撥函式
	console.log('Listener1',arg1,arg2);
});
emitter.on('someEvent',function(arg1,arg2){
	console.log('Listener2',arg1,arg2);
});
emitter.emit('someEvent','marico',1991);//發射someEvent事件,傳遞引數到事件監聽器的引數表


            常用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,則移除指定事件的所有監聽器。             2.error事件                EventEmitter定義了一個特殊的事件error,它包含錯誤的定義,我們在遇到異常的時候通常會發射error事件,當error事件被髮射時,EventEmitter規定如果沒有相應的監聽器,Node.js會把它當作異常,退出程式並列印呼叫棧,我們一般要為發射error的事件物件設定監聽器,避免遇到錯誤後整合程式崩潰,例如:
var events=require('events');
var emitter=new events.EventEmitter();
emitter.emit('error');


             3.繼承EventEmitter                 大多數時候我們不會直接使用EventEmitter,而是在物件中繼承它,包括fs,net,http   在內的。只要是支援事件相應的核心模組都是EventEmitter的子類。                 為什麼這樣做呢?                      1.具有某個實體功能的物件實現事件的符合語義,事件的監聽和發射應該是一個物件的發放。                       2.javaScript的物件機制基於原型,支援部分多重繼承,繼承EventEmitter不會打亂物件原有的繼承關係

相關推薦

node.js util全域性變數事件驅動events

一、util全域性變數         1.util.inherits(constructor,superConstructor)             此方法是一個實現物件間原型繼承的函式。javaScript通過原型賦值來實現繼承,細節可參考雲哥JS高階視訊(原型)。

node.js util全域性變數 事件驅動events

一、util全域性變數         1.util.inherits(constructor,superConstructor)             此方法是一個實現物件間原型繼承的函式。javaScript通過原型賦值來實現繼承,細節可參考雲哥JS高階視訊(原型)。

Node js全域性物件全域性變數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

node.js 設定全域性快取下載路徑

一、修改配置 方式1、 在nodejs的安裝目錄中找到node_modules\npm\.npmrc檔案 修改如下即可: prefix = D:\AppData\NodeJs\node_global_modules cache = D:\AppData\NodeJs\node_c

JS全域性變數區域性變數

全域性變數,作用域為所屬的整個程式。 定義形式: 在函式外定義。 在函式內定義,但是不加 var 宣告。 使用 window.變數名 的形式定義。(注:相容性未知) 使用 window['變數名'] 的形式定義。(注:

js全域性變數區域性變數

全域性變數:在script標籤裡面定義一個變數,這個變數在頁面中的js都可以使用。                  可以在方法外部使用,可以在方法內部使用,可以在另一個script中使用。區域性變數:

JS 變數函式提升 全域性變數區域性變數

1. var a = 10; function test() { a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test();//100 10 100 =&

js全域性變數區域性變數以及變數宣告提升

區域性變數和全域性變數重名時: 一、Javascript的變數的scope是根據方法塊來劃分的(也就是說以function的一對大括號{ }來劃分)。切記,是function塊,而for、while、if塊並不是作用域的劃分標準。 二、 當全域性變數跟區域性變數重名時,區域性變數的scope

JS中最經典的全域性變數區域性變數問題(1、作用域作用域鏈 2、變數宣告提前)

var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test(); 1、程式的執行結果為:100

Node中的全域性物件全域性變數

這個文章主要是對上一個文章的擴充 util物件 在Node環境已經安裝好的前提下,使用util中已經定義的方法,只需要require('util')即可; uti是utility(功效,用途)的縮寫。這util模組的設計主要是為了滿足Node內部API的需

Node.js Net 模組的所有事件方法&&net.Socket

Node.js Net 模組 Node.js Net 模組提供了一些用於底層的網路通訊的小工具,包含了建立伺服器/客戶端的方法,我們可以通過以下方式引入該模組: var net = require("net")方法 net.createServer([options]

js中區域性變數全域性變數閉包的理解

對js中區域性變數、全域性變數和閉包的理解 區域性變數 對於區域性變數,js給出的定義是這樣的:在 JavaScript函式內部宣告的變數(使用 var)是區域性變數,所以只能在函式內部訪問它。(該變數的作用域是區域性的)。可以在不同的函式中使用名稱相同的區域性變數,因為只有宣告過該變數的函式才能識別出該變數

node.js環境在WindowMac中配置,已經安裝cnpm配置Less環境

use usr 版本 htm args gin targe mpi ffffff Node.js 和cnpm安裝 最近準備學習vue.js,但首先需要配置電腦的環境。配置node.js。 1.在node(https://nodejs.org/en/)官網上下載安裝node.

Python3 全域性變數區域性變數的使用

name='lhf' def change_name(): print('我的名字',name) change_name() def change_name(): name='帥了一筆' print('我的名字',name) change_name() print(name) d

C++靜態全域性變數全域性變數的區別

    靜態全域性變數 非靜態全域性變數 儲存方式 靜態儲存 靜態儲存 作用域 定義該變數的原始檔內 所有原始檔   解釋: 共同點:

Python千萬要注意的全域性變數區域性變數問題

1、直接在函式中呼叫全域性變數 m = 100 def fun(): print("m1:",m) fun() print("m2:", m)  輸出: 2、函式體內呼叫與全域性變數同名的區域性變數 m = 100 def fun(): m = 50

python--全域性變數區域性變數

區域性變數: 是在函式內部定義的變數,只能在函式內部使用 函式執行結束後,函式的區域性變數,會被系統回收 作用:在函式內部使用,臨時儲存函式內部需要使用的資料 全域性變數: 是在函式外部定義的變數(沒有定義某一個函式內,所有函式都

關於python的全域性變數區域性變數

全域性變數: 定義在函式外部,作用域是整個程式碼段,儲存在記憶體中。 區域性變數: 定義在函式內部,作用域僅在函式內部,儲存在棧中,當函式完成功能,區域性變數會自動丟失。 如果在函式內試圖是修改全域性變數,python會自動建立一個區域性變數替代,名字和全域性變數相同。 下面摘抄小甲魚老

Node.js學習隨筆三,事件event

Node.js 是單程序單執行緒應用程式,但是因為 V8 引擎提供的非同步執行回撥介面,通過這些介面可以處理大量的併發,所以效能非常高。 Node.js 幾乎每一個 API 都是支援回撥函式的。 Node.js 基本上所有的事件機制都是用設計模式中觀察者模式實現。 Node.js 單執行緒類似進入一個w

vue中如何定義全域性變數 全域性函式

定義全域性變數 原理: 設定一個專用的的全域性變數模組檔案,模組裡面定義一些變數初始狀態,用export default 暴露出去,在main.js裡面使用Vue.prototype掛載到vue例項上面或者在其它地方需要使用時,引入該模組便可。 全域性變數模組檔案: Global.v