1. 程式人生 > >nodeJS入門例子一—工具(util)

nodeJS入門例子一—工具(util)

    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格式化物件時多少次遞迴。檢查大型複雜的物件有用

預設遞迴為兩次。傳遞null值給depath使其無限遞迴。
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!"