05nodejs 全局對(duì)象 常用工具

01您机、JavaScript 中有一個(gè)特殊的對(duì)象谬泌,稱為全局對(duì)象(Global Object),它及其所有屬性都可以在程序的任何地方訪問乙墙,即全局變量颖变。
在瀏覽器 JavaScript 中,通常 window 是全局對(duì)象听想, 而 Node.js 中的全局對(duì)象是 global腥刹,所有全局變量(除了 global 本身以外)都是 global 對(duì)象的屬性。
在 Node.js 我們可以直接訪問到 global 的屬性汉买,而不需要在應(yīng)用中包含它肛走。
02、全局對(duì)象與全局變量
global 最根本的作用是作為全局變量的宿主。按照 ECMAScript 的定義朽色,滿足以下條 件的變量是全局變量:
在最外層定義的變量邻吞;
全局對(duì)象的屬性;
隱式定義的變量(未定義直接賦值的變量)葫男。
當(dāng)你定義一個(gè)全局變量時(shí)抱冷,這個(gè)變量同時(shí)也會(huì)成為全局對(duì)象的屬性,反之亦然梢褐。需要注 意的是旺遮,在 Node.js 中你不可能在最外層定義變量,因?yàn)樗杏脩舸a都是屬于當(dāng)前模塊的盈咳, 而模塊本身不是最外層上下文耿眉。
注意: 永遠(yuǎn)使用 var 定義變量以避免引入全局變量,因?yàn)槿肿兞繒?huì)污染 命名空間鱼响,提高代碼的耦合風(fēng)險(xiǎn)
03鸣剪、__filename
__filename 表示當(dāng)前正在執(zhí)行的腳本的文件名。它將輸出文件所在位置的絕對(duì)路徑丈积,且和命令行參數(shù)所指定的文件名不一定相同筐骇。 如果在模塊中,返回的值是模塊文件的路徑江滨。
實(shí)例
創(chuàng)建文件 main.js 铛纬,代碼如下所示:

// 輸出全局變量 __filename 的值
console.log( __filename );

執(zhí)行 main.js 文件,代碼如下所示:

$ node main.js
/web/com/runoob/nodejs/main.js

04唬滑、__dirname
__dirname 表示當(dāng)前執(zhí)行腳本所在的目錄告唆。
實(shí)例
創(chuàng)建文件 main.js ,代碼如下所示:

// 輸出全局變量 __dirname 的值
console.log( __dirname );

執(zhí)行 main.js 文件晶密,代碼如下所示:

$ node main.js
/web/com/runoob/nodejs

05悔详、setTimeout(cb, ms)
setTimeout(cb, ms) 全局函數(shù)在指定的毫秒(ms)數(shù)后執(zhí)行指定函數(shù)(cb)。:setTimeout() 只執(zhí)行一次指定函數(shù)惹挟。
返回一個(gè)代表定時(shí)器的句柄值。
實(shí)例
創(chuàng)建文件 main.js 缝驳,代碼如下所示:

function printHello(){
   console.log( "Hello, World!");
}
// 兩秒后執(zhí)行以上函數(shù)
setTimeout(printHello, 2000);

執(zhí)行 main.js 文件连锯,代碼如下所示:

$ node main.js
Hello, World!

06、clearTimeout(t)
clearTimeout( t ) 全局函數(shù)用于停止一個(gè)之前通過 setTimeout() 創(chuàng)建的定時(shí)器用狱。 參數(shù) t 是通過 setTimeout() 函數(shù)創(chuàng)建的定時(shí)器运怖。
實(shí)例
創(chuàng)建文件 main.js ,代碼如下所示:

function printHello(){
   console.log( "Hello, World!");
}
// 兩秒后執(zhí)行以上函數(shù)
var t = setTimeout(printHello, 2000);

// 清除定時(shí)器
clearTimeout(t);

執(zhí)行 main.js 文件夏伊,代碼如下所示:

$ node main.js

07摇展、setInterval(cb, ms)
setInterval(cb, ms) 全局函數(shù)在指定的毫秒(ms)數(shù)后執(zhí)行指定函數(shù)(cb)。
返回一個(gè)代表定時(shí)器的句柄值溺忧∮搅可以使用 clearInterval(t) 函數(shù)來(lái)清除定時(shí)器盯孙。
setInterval() 方法會(huì)不停地調(diào)用函數(shù),直到 clearInterval() 被調(diào)用或窗口被關(guān)閉祟滴。

function printHello(){
   console.log( "Hello, World!");
}
// 兩秒后執(zhí)行以上函數(shù)
setInterval(printHello, 2000);

08振惰、console
console 用于提供控制臺(tái)標(biāo)準(zhǔn)輸出,它是由 Internet Explorer 的 JScript 引擎提供的調(diào)試工具垄懂,后來(lái)逐漸成為瀏覽器的事實(shí)標(biāo)準(zhǔn)骑晶。
Node.js 沿用了這個(gè)標(biāo)準(zhǔn),提供與習(xí)慣行為一致的 console 對(duì)象草慧,用于向標(biāo)準(zhǔn)輸出流(stdout)或標(biāo)準(zhǔn)錯(cuò)誤流(stderr)輸出字符桶蛔。
console 方法
以下為 console 對(duì)象的方法:

序號(hào)  方法 & 描述
1   console.log([data][, ...])
向標(biāo)準(zhǔn)輸出流打印字符并以換行符結(jié)束。該方法接收若干 個(gè)參數(shù)漫谷,如果只有一個(gè)參數(shù)仔雷,則輸出這個(gè)參數(shù)的字符串形式。如果有多個(gè)參數(shù)抖剿,則 以類似于C 語(yǔ)言 printf() 命令的格式輸出朽寞。
2   console.info([data][, ...])
該命令的作用是返回信息性消息,這個(gè)命令與console.log差別并不大斩郎,除了在chrome中只會(huì)輸出文字外脑融,其余的會(huì)顯示一個(gè)藍(lán)色的驚嘆號(hào)。
3   console.error([data][, ...])
輸出錯(cuò)誤消息的缩宜≈庥控制臺(tái)在出現(xiàn)錯(cuò)誤時(shí)會(huì)顯示是紅色的叉子。
4   console.warn([data][, ...])
輸出警告消息锻煌〖瞬迹控制臺(tái)出現(xiàn)有黃色的驚嘆號(hào)。
5   console.dir(obj[, options])
用來(lái)對(duì)一個(gè)對(duì)象進(jìn)行檢查(inspect)宋梧,并以易于閱讀和打印的格式顯示匣沼。
6   console.time(label)
輸出時(shí)間,表示計(jì)時(shí)開始捂龄。
7   console.timeEnd(label)
結(jié)束時(shí)間释涛,表示計(jì)時(shí)結(jié)束。
8   console.trace(message[, ...])
當(dāng)前執(zhí)行的代碼在堆棧中的調(diào)用路徑倦沧,這個(gè)測(cè)試函數(shù)運(yùn)行很有幫助唇撬,只要給想測(cè)試的函數(shù)里面加入 console.trace 就行了。
9   console.assert(value[, message][, ...])
用于判斷某個(gè)表達(dá)式或變量是否為真展融,接收兩個(gè)參數(shù)窖认,第一個(gè)參數(shù)是表達(dá)式,第二個(gè)參數(shù)是字符串。只有當(dāng)?shù)谝粋€(gè)參數(shù)為false扑浸,才會(huì)輸出第二個(gè)參數(shù)烧给,否則不會(huì)有任何結(jié)果。

console.log():向標(biāo)準(zhǔn)輸出流打印字符并以換行符結(jié)束首装。
console.log 接收若干 個(gè)參數(shù)创夜,如果只有一個(gè)參數(shù),則輸出這個(gè)參數(shù)的字符串形式仙逻。如果有多個(gè)參數(shù)驰吓,則 以類似于C 語(yǔ)言 printf() 命令的格式輸出。
例子

console.info("程序開始執(zhí)行:");

var counter = 10;
console.log("計(jì)數(shù): %d", counter);

console.time("獲取數(shù)據(jù)");
//
// 執(zhí)行一些代碼
// 
console.timeEnd('獲取數(shù)據(jù)');

console.info("程序執(zhí)行完畢系奉。")

執(zhí)行 main.js 文件檬贰,代碼如下所示:

$ node main.js
程序開始執(zhí)行:
計(jì)數(shù): 10
獲取數(shù)據(jù): 0ms
程序執(zhí)行完畢

09、process
process 是一個(gè)全局變量缺亮,即 global 對(duì)象的屬性翁涤。
它用于描述當(dāng)前Node.js 進(jìn)程狀態(tài)的對(duì)象,提供了一個(gè)與操作系統(tǒng)的簡(jiǎn)單接口萌踱。通常在你寫本地命令行程序的時(shí)候葵礼,少不了要 和它打交道。下面將會(huì)介紹 process 對(duì)象的一些最常用的成員方法并鸵。

序號(hào)  事件 & 描述
1   exit
當(dāng)進(jìn)程準(zhǔn)備退出時(shí)觸發(fā)鸳粉。
2   beforeExit
當(dāng) node 清空事件循環(huán),并且沒有其他安排時(shí)觸發(fā)這個(gè)事件园担。通常來(lái)說届谈,當(dāng)沒有進(jìn)程安排時(shí) node 退出,但是 'beforeExit' 的監(jiān)聽器可以異步調(diào)用弯汰,這樣 node 就會(huì)繼續(xù)執(zhí)行艰山。
3   uncaughtException
當(dāng)一個(gè)異常冒泡回到事件循環(huán),觸發(fā)這個(gè)事件咏闪。如果給異常添加了監(jiān)視器曙搬,默認(rèn)的操作(打印堆棧跟蹤信息并退出)就不會(huì)發(fā)生。
4   Signal 事件
當(dāng)進(jìn)程接收到信號(hào)時(shí)就觸發(fā)鸽嫂。信號(hào)列表詳見標(biāo)準(zhǔn)的 POSIX 信號(hào)名纵装,如 SIGINT、SIGUSR1 等溪胶。

實(shí)例
創(chuàng)建文件 main.js ,代碼如下所示:

process.on('exit', function(code) {

  // 以下代碼永遠(yuǎn)不會(huì)執(zhí)行
  setTimeout(function() {
    console.log("該代碼不會(huì)執(zhí)行");
  }, 0);
  
  console.log('退出碼為:', code);
});
console.log("程序執(zhí)行結(jié)束");

執(zhí)行main,js

$ node main.js
程序執(zhí)行結(jié)束
退出碼為: 0

10稳诚、退出狀態(tài)碼


狀態(tài)碼 名稱 & 描述
1   Uncaught Fatal Exception
有未捕獲異常哗脖,并且沒有被域或 uncaughtException 處理函數(shù)處理。
2   Unused
保留
3   Internal JavaScript Parse Error
JavaScript的源碼啟動(dòng) Node 進(jìn)程時(shí)引起解析錯(cuò)誤。非常罕見才避,僅會(huì)在開發(fā) Node 時(shí)才會(huì)有橱夭。
4   Internal JavaScript Evaluation Failure
JavaScript 的源碼啟動(dòng) Node 進(jìn)程,評(píng)估時(shí)返回函數(shù)失敗桑逝。非常罕見棘劣,僅會(huì)在開發(fā) Node 時(shí)才會(huì)有。
5   Fatal Error
V8 里致命的不可恢復(fù)的錯(cuò)誤楞遏。通常會(huì)打印到 stderr 茬暇,內(nèi)容為: FATAL ERROR
6   Non-function Internal Exception Handler
未捕獲異常,內(nèi)部異常處理函數(shù)不知為何設(shè)置為on-function寡喝,并且不能被調(diào)用糙俗。
7   Internal Exception Handler Run-Time Failure
未捕獲的異常, 并且異常處理函數(shù)處理時(shí)自己拋出了異常预鬓。例如巧骚,如果 process.on('uncaughtException') 或 domain.on('error') 拋出了異常。
8   Unused
保留
9   Invalid Argument
可能是給了未知的參數(shù)格二,或者給的參數(shù)沒有值劈彪。
10  Internal JavaScript Run-Time Failure
JavaScript的源碼啟動(dòng) Node 進(jìn)程時(shí)拋出錯(cuò)誤,非常罕見顶猜,僅會(huì)在開發(fā) Node 時(shí)才會(huì)有沧奴。
12  Invalid Debug Argument 
設(shè)置了參數(shù)--debug 和/或 --debug-brk,但是選擇了錯(cuò)誤端口驶兜。
128 Signal Exits
如果 Node 接收到致命信號(hào)扼仲,比如SIGKILL 或 SIGHUP,那么退出代碼就是128 加信號(hào)代碼抄淑。這是標(biāo)準(zhǔn)的 Unix 做法屠凶,退出信號(hào)代碼放在高位

11、Process 屬性

序號(hào). 屬性 & 描述
1   stdout
標(biāo)準(zhǔn)輸出流肆资。
2   stderr
標(biāo)準(zhǔn)錯(cuò)誤流矗愧。
3   stdin
標(biāo)準(zhǔn)輸入流。
4   argv
argv 屬性返回一個(gè)數(shù)組郑原,由命令行執(zhí)行腳本時(shí)的各個(gè)參數(shù)組成唉韭。它的第一個(gè)成員總是node,第二個(gè)成員是腳本文件名犯犁,其余成員是腳本文件的參數(shù)属愤。
5   execPath
返回執(zhí)行當(dāng)前腳本的 Node 二進(jìn)制文件的絕對(duì)路徑。
6   execArgv
返回一個(gè)數(shù)組酸役,成員是命令行下執(zhí)行腳本時(shí)住诸,在Node可執(zhí)行文件與腳本文件之間的命令行參數(shù)驾胆。
7   env
返回一個(gè)對(duì)象,成員為當(dāng)前 shell 的環(huán)境變量
8   exitCode
進(jìn)程退出時(shí)的代碼贱呐,如果進(jìn)程優(yōu)通過 process.exit() 退出丧诺,不需要指定退出碼。
9   version
Node 的版本奄薇,比如v0.10.18驳阎。
10  versions
一個(gè)屬性,包含了 node 的版本和依賴.
11  config
一個(gè)包含用來(lái)編譯當(dāng)前 node 執(zhí)行文件的 javascript 配置選項(xiàng)的對(duì)象馁蒂。它與運(yùn)行 ./configure 腳本生成的 "config.gypi" 文件相同呵晚。
12  pid
當(dāng)前進(jìn)程的進(jìn)程號(hào)。
13  title
進(jìn)程名远搪,默認(rèn)值為"node"劣纲,可以自定義該值。
14  arch
當(dāng)前 CPU 的架構(gòu):'arm'谁鳍、'ia32' 或者 'x64'癞季。
15  platform
運(yùn)行程序所在的平臺(tái)系統(tǒng) 'darwin', 'freebsd', 'linux', 'sunos' 或 'win32'
16  mainModule
require.main 的備選方法。不同點(diǎn)倘潜,如果主模塊在運(yùn)行時(shí)改變绷柒,require.main可能會(huì)繼續(xù)返回老的模塊′桃颍可以認(rèn)為废睦,這兩者引用了同一個(gè)模塊。

12养泡、方法參考手冊(cè)
Process 提供了很多有用的方法嗜湃,便于我們更好的控制系統(tǒng)的交互:

序號(hào)  方法 & 描述
1   abort()
這將導(dǎo)致 node 觸發(fā) abort 事件。會(huì)讓 node 退出并生成一個(gè)核心文件澜掩。
2   chdir(directory)
改變當(dāng)前工作進(jìn)程的目錄购披,如果操作失敗拋出異常。
3   cwd()
返回當(dāng)前進(jìn)程的工作目錄
4   exit([code])
使用指定的 code 結(jié)束進(jìn)程肩榕。如果忽略刚陡,將會(huì)使用 code 0。
5   getgid()
獲取進(jìn)程的群組標(biāo)識(shí)(參見 getgid(2))株汉。獲取到得時(shí)群組的數(shù)字 id筐乳,而不是名字。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如乔妈,非Windows 和 Android)蝙云。
6   setgid(id)
設(shè)置進(jìn)程的群組標(biāo)識(shí)(參見 setgid(2))÷氛伲可以接收數(shù)字 ID 或者群組名勃刨。如果指定了群組名匀泊,會(huì)阻塞等待解析為數(shù)字 ID 。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如朵你,非Windows 和 Android)。
7   getuid()
獲取進(jìn)程的用戶標(biāo)識(shí)(參見 getuid(2))揣非。這是數(shù)字的用戶 id抡医,不是用戶名。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如早敬,非Windows 和 Android)忌傻。
8   setuid(id)
設(shè)置進(jìn)程的用戶標(biāo)識(shí)(參見setuid(2))。接收數(shù)字 ID或字符串名字搞监。果指定了群組名水孩,會(huì)阻塞等待解析為數(shù)字 ID 。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如琐驴,非Windows 和 Android)俘种。
9   getgroups()
返回進(jìn)程的群組 iD 數(shù)組。POSIX 系統(tǒng)沒有保證一定有绝淡,但是 node.js 保證有宙刘。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)牢酵。
10  setgroups(groups)
設(shè)置進(jìn)程的群組 ID悬包。這是授權(quán)操作,所有你需要有 root 權(quán)限馍乙,或者有 CAP_SETGID 能力布近。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如,非Windows 和 Android)丝格。
11  initgroups(user, extra_group)
讀取 /etc/group 撑瞧,并初始化群組訪問列表,使用成員所在的所有群組铁追。這是授權(quán)操作季蚂,所有你需要有 root 權(quán)限,或者有 CAP_SETGID 能力琅束。
注意:這個(gè)函數(shù)僅在 POSIX 平臺(tái)上可用(例如扭屁,非Windows 和 Android)。
12  kill(pid[, signal])
發(fā)送信號(hào)給進(jìn)程. pid 是進(jìn)程id涩禀,并且 signal 是發(fā)送的信號(hào)的字符串描述料滥。信號(hào)名是字符串,比如 'SIGINT' 或 'SIGHUP'艾船。如果忽略葵腹,信號(hào)會(huì)是 'SIGTERM'高每。
13  memoryUsage()
返回一個(gè)對(duì)象,描述了 Node 進(jìn)程所用的內(nèi)存狀況践宴,單位為字節(jié)鲸匿。
14  nextTick(callback)
一旦當(dāng)前事件循環(huán)結(jié)束,調(diào)用回到函數(shù)阻肩。
15  umask([mask])
設(shè)置或讀取進(jìn)程文件的掩碼带欢。子進(jìn)程從父進(jìn)程繼承掩碼牡彻。如果mask 參數(shù)有效扎附,返回舊的掩碼查坪。否則箫柳,返回當(dāng)前掩碼轰坊。
16  uptime()
返回 Node 已經(jīng)運(yùn)行的秒數(shù)甸饱。
17  hrtime()
返回當(dāng)前進(jìn)程的高分辨時(shí)間仙辟,形式為 [seconds, nanoseconds]數(shù)組庆尘。它是相對(duì)于過去的任意事件雄右。該值與日期無(wú)關(guān)空骚,因此不受時(shí)鐘漂移的影響。主要用途是可以通過精確的時(shí)間間隔擂仍,來(lái)衡量程序的性能府怯。
你可以將之前的結(jié)果傳遞給當(dāng)前的 process.hrtime() ,會(huì)返回兩者間的時(shí)間差防楷,用來(lái)基準(zhǔn)和測(cè)量時(shí)間間隔牺丙。

實(shí)例
創(chuàng)建文件 main.js ,代碼如下所示:

// 輸出當(dāng)前目錄
console.log('當(dāng)前目錄: ' + process.cwd());

// 輸出當(dāng)前版本
console.log('當(dāng)前版本: ' + process.version);

// 輸出內(nèi)存使用情況
console.log(process.memoryUsage());

結(jié)果:

$ node main.js
當(dāng)前目錄: /web/com/runoob/nodejs
當(dāng)前版本: v0.10.36
{ rss: 12541952, heapTotal: 4083456, heapUsed: 2157056 }

---------------------------------------------------------常用工具---------------------------------------------------------
util 是一個(gè)Node.js 核心模塊复局,提供常用函數(shù)的集合冲簿,用于彌補(bǔ)核心JavaScript 的功能 過于精簡(jiǎn)的不足。
01亿昏、util.inherits
util.inherits(constructor, superConstructor)是一個(gè)實(shí)現(xiàn)對(duì)象間原型繼承 的函數(shù)峦剔。
JavaScript 的面向?qū)ο筇匦允腔谠偷模c常見的基于類的不同角钩。JavaScript 沒有 提供對(duì)象繼承的語(yǔ)言級(jí)別特性吝沫,而是通過原型復(fù)制來(lái)實(shí)現(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); 

我們定義了一個(gè)基礎(chǔ)對(duì)象Base 和一個(gè)繼承自Base 的Sub惨险,Base 有三個(gè)在構(gòu)造函數(shù) 內(nèi)定義的屬性和一個(gè)原型中定義的函數(shù),通過util.inherits 實(shí)現(xiàn)繼承脊髓。運(yù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 繼承。
同時(shí)将硝,在原型中定義的屬性不會(huì)被console.log 作 為對(duì)象的屬性輸出恭朗。如果我們?nèi)サ?objSub.sayHello(); 這行的注釋屏镊,將會(huì)看到:

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) 

02、util.inspect
util.inspect(object,[showHidden],[depth],[colors])是一個(gè)將任意對(duì)象轉(zhuǎn)換 為字符串的方法痰腮,通常用于調(diào)試和錯(cuò)誤輸出而芥。它至少接受一個(gè)參數(shù) object,即要轉(zhuǎn)換的對(duì)象膀值。
showHidden 是一個(gè)可選參數(shù)蔚出,如果值為 true,將會(huì)輸出更多隱藏信息虫腋。
depth 表示最大遞歸的層數(shù),如果對(duì)象很復(fù)雜稀余,你可以指定層數(shù)以控制輸出信息的多 少悦冀。如果不指定depth,默認(rèn)會(huì)遞歸2層睛琳,指定為 null 表示將不限遞歸層數(shù)完整遍歷對(duì)象盒蟆。 如果color 值為 true,輸出格式將會(huì)以ANSI 顏色編碼师骗,通常用于在終端顯示更漂亮 的效果历等。
特別要指出的是,util.inspect 并不會(huì)簡(jiǎn)單地直接把對(duì)象轉(zhuǎn)換為字符串辟癌,即使該對(duì) 象定義了toString 方法也不會(huì)調(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] } } }

03、util.isArray(object)
如果給定的參數(shù) "object" 是一個(gè)數(shù)組返回true黍少,否則返回false寡夹。

var util = require('util');

util.isArray([])
  // true
util.isArray(new Array)
  // true
util.isArray({})
  // false

04、util.isRegExp(object)
如果給定的參數(shù) "object" 是一個(gè)正則表達(dá)式返回true厂置,否則返回false菩掏。

var util = require('util');

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

05、util.isDate(object)
如果給定的參數(shù) "object" 是一個(gè)日期返回true昵济,否則返回false智绸。

var util = require('util');

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

06、util.isError(object)
如果給定的參數(shù) "object" 是一個(gè)錯(cuò)誤對(duì)象返回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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市海铆,隨后出現(xiàn)的幾起案子沼溜,更是在濱河造成了極大的恐慌,老刑警劉巖游添,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件系草,死亡現(xiàn)場(chǎng)離奇詭異通熄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)找都,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門唇辨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人能耻,你說我怎么就攤上這事赏枚。” “怎么了晓猛?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵饿幅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我戒职,道長(zhǎng)栗恩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任洪燥,我火速辦了婚禮磕秤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捧韵。我一直安慰自己市咆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布再来。 她就那樣靜靜地躺著蒙兰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芒篷。 梳的紋絲不亂的頭發(fā)上癞己,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音梭伐,去河邊找鬼痹雅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糊识,可吹牛的內(nèi)容都是我干的绩社。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼赂苗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼愉耙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拌滋,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朴沿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赌渣,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魏铅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坚芜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片览芳。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸿竖,靈堂內(nèi)的尸體忽然破棺而出沧竟,到底是詐尸還是另有隱情,我是刑警寧澤缚忧,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布悟泵,位于F島的核電站,受9級(jí)特大地震影響闪水,放射性物質(zhì)發(fā)生泄漏糕非。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一敦第、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧店量,春花似錦芜果、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至旱爆,卻和暖如春舀射,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怀伦。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工脆烟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人房待。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓邢羔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親桑孩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拜鹤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法流椒,內(nèi)部類的語(yǔ)法敏簿,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理惯裕,服務(wù)發(fā)現(xiàn)温数,斷路器,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 一:java概述:1轻猖,JDK:Java Development Kit帆吻,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,629評(píng)論 0 11
  • 要怎么努力才可以過上你想要的生活? 文|獨(dú)妹子 你說你想嫁給愛情败许,你知道你想要的愛情是什么模樣嗎王带? 說你想要詩(shī)和遠(yuǎn)...
    凝霜記憶閱讀 284評(píng)論 0 2
  • 不錯(cuò)
    柜子1234閱讀 133評(píng)論 0 0