var util = require('util');
/** util.format(format[,...])按给定的格式输出数据
%s--String,%d--Number,%j--JSON,%--百分符号不为一个参数
*/
util.format('%s:%s','f00');
console.log(util.format('%s:%s','f00')); // 'f00:%s'
console.log(util.format('%s:%s', 'foo', 'bar', 'baz')); // 'foo:bar baz'
console.log(util.format(1, 2, 3)); // '1 2 3'
/** util.debug(string)同步输出函数,将阻止进程并立即将string给stderr
*/
util.debug('message on stderr.');
/** util.error([...])除了它会立即将所有参数给stderr外,和util.debug()一样
*/
util.error('util error.');
/** util.puts([...])同步输出函数,将阻止进程并立即将所有参数带换行地输出给stdout
*/
util.puts('block','process');
/** util.print([...])同步输出函数,将阻止进程,将每个参数都转为字符串在给stdout,但不带换行
*/
util.print('block','process','\n');
/** util.log(string) 在stdout中输出,并带时间戳
*/
util.log('Timestamped message.')
/** util.inspect(object[, showHidden][, depath][, colors])
以字符串类型返回object的描述,对debugging有所帮助
如果showHidden=true,那么object的非枚举属性也会被显示,默认为false
如果depath给定了,inspect方法就会进行几次递归。在处理分成复杂的object时很有用
默认递归两次
如果colors=true,输出数据将带颜色。默认为false
*/
console.log(util.inspect(util))
/** console.log(util.inspect(util,true,null))
console.log(util.inspect(util,true,null,true))
*/
/** util.isArray(object)判断object是否为数组 */
console.log(util.isArray([])) // true
console.log(util.isArray(new Array)) // true
console.log(util.isArray({})) //false
/** util.isRegExp(object) 判断object是否为正则对象 */
console.log(util.isRegExp(/some regexp/)); // true
console.log(util.isRegExp(new RegExp('another regexp'))) // true
console.log(util.isRegExp({})) //false
/** util.isDate(object) 判断object是否为日期对象*/
console.log(util.isDate(new Date())) // true
console.log(util.isDate(Date())) //false--无new返回的是字符串
console.log(util.isDate({})) //false
/** util.isError(object) 判断object是否为错误对象 */
console.log(util.isError(new Error())) // true
console.log(util.isError(new TypeError())) // true
console.log(util.isError({name:'Error',message:'an error occured.'})) //false
/** util.pump(readableStream,writableStream[,callback])
从readableStream读数据,并把数据给writableStream
当writableStream.write(data)写数据时函数返回是false时
readableStream将停止工作,直到writableStream中的drain方法被调用
callback只有一个error参数,当writableStream关闭或出错时该方法才被调用
*/
/**
util.inherits(constructor,superConstructor)
*/
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); //.super_得到父类
stream.on('data',function(data){
console.log('Received data:' + data);
})
stream.write('It works!');