node.js(十五)

Node.js 常用工具
util 是一個Node.js 核心模塊鲫趁,提供常用函數(shù)的集合筐赔,用于彌補核心JavaScript 的功能 過于精簡的不足。
util.inherits
util.inherits(constructor, superConstructor)是一個實現(xiàn)對象間原型繼承 的函數(shù)珊随。
JavaScript 的面向?qū)ο筇匦允腔谠偷睦时c常見的基于類的不同污淋。JavaScript 沒有 提供對象繼承的語言級別特性,而是通過原型復(fù)制來實現(xiàn)的余掖。
在這里我們只介紹util.inherits 的用法寸爆,示例如下:

var util = require('util');
 function Base() { this.name = 'base'; 
this.base = 1991;
 this.sayHello = function() { console.log('Hello ' + this.name); 
};
 }
 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); 

我們定義了一個基礎(chǔ)對象Base 和一個繼承自Base 的Sub,Base 有三個在構(gòu)造函數(shù) 內(nèi)定義的屬性和一個原型中定義的函數(shù),通過util.inherits 實現(xiàn)繼承赁豆。運行結(jié)果如下:

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

注意:Sub 僅僅繼承了Base 在原型中定義的函數(shù)仅醇,而構(gòu)造函數(shù)內(nèi)部創(chuàng)造的 base 屬 性和 sayHello 函數(shù)都沒有被 Sub 繼承。
同時魔种,在原型中定義的屬性不會被console.log 作 為對象的屬性輸出析二。如果我們?nèi)サ?objSub.sayHello(); 這行的注釋,將會看到:

node.js:201 throw e;
 // process.nextTick error, or 'error' event on first tick
 ^
 TypeError: Object #<Sub> has no method 'sayHello' 
at Object.<anonymous> (/home/byvoid/utilinherits.js:29:8) 
at Module._compile (module.js:441:26) at Object..js (module.js:459:10) 
at Module.load (module.js:348:31) 
at Function._load (module.js:308:12) 
at Array.0 (module.js:479:10) 
at EventEmitter._tickCallback (node.js:192:40) 

util.inspect
util.inspect(object,[showHidden],[depth],[colors])是一個將任意對象轉(zhuǎn)換 為字符串的方法节预,通常用于調(diào)試和錯誤輸出叶摄。它至少接受一個參數(shù) object,即要轉(zhuǎn)換的對象心铃。
showHidden 是一個可選參數(shù),如果值為 true挫剑,將會輸出更多隱藏信息去扣。
depth 表示最大遞歸的層數(shù),如果對象很復(fù)雜樊破,你可以指定層數(shù)以控制輸出信息的多 少愉棱。如果不指定depth,默認會遞歸2層哲戚,指定為 null 表示將不限遞歸層數(shù)完整遍歷對象奔滑。 如果color 值為 true,輸出格式將會以ANSI 顏色編碼顺少,通常用于在終端顯示更漂亮 的效果朋其。
特別要指出的是,util.inspect 并不會簡單地直接把對象轉(zhuǎn)換為字符串脆炎,即使該對 象定義了toString 方法也不會調(diào)用梅猿。

var util = require('util'); 
function Person() { this.name = 'byvoid'; this.toString = function() { return this.name; }; } 
var obj = new Person(); console.log(util.inspect(obj)); 
console.log(util.inspect(obj, true)); 

運行結(jié)果是:

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

util.isArray(object)

如果給定的參數(shù) "object" 是一個數(shù)組返回true,否則返回false秒裕。

var util = require('util');
util.isArray([])
 // true
util.isArray(new Array) 
// true
util.isArray({}) 
// false

util.isRegExp(object)
如果給定的參數(shù) "object" 是一個正則表達式返回true袱蚓,否則返回false。

var util = require('util');
util.isRegExp(/some regexp/) 
// true
util.isRegExp(new RegExp('another regexp')) 
// true
util.isRegExp({})
 // false

util.isDate(object)
如果給定的參數(shù) "object" 是一個日期返回true几蜻,否則返回false喇潘。

var util = require('util');
util.isDate(new Date()) 
// true
util.isDate(Date()) 
// false (without 'new' returns a String)
util.isDate({}) 
// false

util.isError(object)
如果給定的參數(shù) "object" 是一個錯誤對象返回true,否則返回false梭稚。

var util = require('util');
util.isError(new Error())
 // true
util.isError(new TypeError()) 
// true
util.isError({ name: 'Error', message: 'an error occurred' }) 
// false

更多詳情可以訪問 http://nodejs.org/api/util.html 了解詳細內(nèi)容颖低。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弧烤,隨后出現(xiàn)的幾起案子枫甲,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件想幻,死亡現(xiàn)場離奇詭異粱栖,居然都是意外死亡,警方通過查閱死者的電腦和手機脏毯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門闹究,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人食店,你說我怎么就攤上這事渣淤。” “怎么了吉嫩?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵价认,是天一觀的道長。 經(jīng)常有香客問我自娩,道長用踩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任忙迁,我火速辦了婚禮脐彩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姊扔。我一直安慰自己惠奸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布恰梢。 她就那樣靜靜地躺著佛南,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嵌言。 梳的紋絲不亂的頭發(fā)上共虑,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音呀页,去河邊找鬼妈拌。 笑死,一個胖子當(dāng)著我的面吹牛蓬蝶,可吹牛的內(nèi)容都是我干的尘分。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼丸氛,長吁一口氣:“原來是場噩夢啊……” “哼培愁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缓窜,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤定续,失蹤者是張志新(化名)和其女友劉穎谍咆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體私股,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡摹察,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倡鲸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片供嚎。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖峭状,靈堂內(nèi)的尸體忽然破棺而出克滴,到底是詐尸還是另有隱情,我是刑警寧澤优床,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布劝赔,位于F島的核電站,受9級特大地震影響胆敞,放射性物質(zhì)發(fā)生泄漏着帽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一竿秆、第九天 我趴在偏房一處隱蔽的房頂上張望启摄。 院中可真熱鬧稿壁,春花似錦幽钢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喧笔,卻和暖如春帽驯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背书闸。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工尼变, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浆劲。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓嫌术,卻偏偏與公主長得像,于是被迫代替她去往敵國和親牌借。 傳聞我的和親對象是個殘疾皇子度气,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Node.js 常用工具 util 是一個Node.js 核心模塊,提供常用函數(shù)的集合膨报,用于彌補核心JavaScr...
    FTOLsXD閱讀 530評論 0 2
  • 內(nèi)容來自《Node.js開發(fā)指南》 核心模塊是 Node.js 的心臟磷籍,它由一些精簡而高效的庫組成适荣,為 Node....
    angelwgh閱讀 888評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)院领,斷路器弛矛,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法栅盲,內(nèi)部類的語法汪诉,繼承相關(guān)的語法,異常的語法谈秫,線程的語...
    子非魚_t_閱讀 31,587評論 18 399