nodeJS入門例子一—工具(util)
util.format()
util.debug(string)
util.log(string)
util.inspect(object, showHidden=false, depth=2)
util.isArray(object)
util.isRegExp(object)
util.isDate(object)
util.isError(object)
util.pump(readableStream, writableStream, [callback])
util.inherits(constructor, superConstructor)
util
這些功能函式都放置在模組'util'。中,使用 require('util')訪問。
util.format()
返回格式化過的第一個引數的字串,與printf類似。
第一個引數是一個包含數字或者是更多其他佔位符的字串。每個佔位符都將用相應引數替換。支援的佔位符有以下幾種:
%s
- String.%d
- Number (包含 integer 和 float).%j
- JSON.%%
- 一個百分號('%'
). 這不消耗引數.
如果佔位符沒有相應的引數,這個佔位符將不會被替換。
util.format('%s:%s', 'foo'); // 'foo:%s'
如果引數個數多餘佔位符個數,多餘的引數將使用util.inspect()
util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'
如果當前沒有需要格式化的引數。將返回所有引數組合而成的字串,組合字串中間以空格分開。使用util.inspect()
轉換成字串。
util.format(1, 2, 3); // '1 2 3'
util.debug(string)
一個同步輸出函式。當遇到標準錯誤(stderr)時過程(process)和輸出(output)將被阻塞。
require('util').debug('message on stderr');
util.log(string)
帶有時間戳的標準輸出。
require('util').log('Timestamped message.');
輸出如下:
7 Dec 00:24:04 - ss
util.inspect(object, showHidden=false, depth=2)
返回物件的字串形式,在除錯中很有用。
如果 showHidden 為 true, 物件的非列舉型別屬性將顯示。
如果 depth的值提供了,他告訴inspect
格式化物件時多少次遞迴。檢查大型複雜的物件,這是有用的。
var util = require('util');
console.log(util.inspect(util, true, null));
util.isArray(object)
返回給定的物件object是否是陣列。
var util = require('util');
util.isArray([])
// true
util.isArray(new Array)
// true
util.isArray({})
// false
util.isRegExp(object)
判斷給定物件是不是正則表示式。
var util = require('util');
util.isRegExp(/some regexp/)
// true
util.isRegExp(new RegExp('another regexp'))
// true
util.isRegExp({})
// false
util.isDate(object)
判斷給定物件是否是日期
var util = require('util');
util.isDate(new Date())
// true
util.isDate(Date())
// false (沒有 'new' 返回一個 String)
util.isDate({})
// false
util.isError(object)
判斷一個物件是否是一個Error
var util = require('util');
util.isError(new Error())
// true
util.isError(new TypeError())
// true
util.isError({ name: 'Error', message: 'an error occurred' })
// false
util.pump(readableStream, writableStream, [callback])
實驗
從readableStream
讀取資料併發送到writableStream
中,當writableStream
.write(data)
返回 false
readableStream
將暫停直到
錯誤處理函式發生呼叫。writableStream
. callback
的drain
util.inherits(constructor, superConstructor)
從一個建構函式中繼承另一個的原生方法。當一個新物件建立時,將從父建構函式(超類)中設定建構函式的原生態。
作為一個額外的便利,將通過構造訪問超類.super_
property.
var util = require("util");
var events = require("events");
function MyStream() {
events.EventEmitter.call(this);
}
util.inherits(MyStream, events.EventEmitter);
MyStream.prototype.write = function(data) {
this.emit("data", data);
}
var stream = new MyStream();
console.log(stream instanceof events.EventEmitter); // true
console.log(MyStream.super_ === events.EventEmitter); // true
stream.on("data", function(data) {
console.log('Received data: "' + data + '"');
})
stream.write("It works!"); // Received data: "It works!"