// 说明
本段为博主注解。
目录
● 工具
○ util.format(format, [...])
○ util.format(format, [...])
○ util.debug(string)
○ util.error([...])
○ util.puts([...])
○ util.print([...])
○ util.log(string)
○ util.inspect(object, [options])
■ Customizing util.inspect colors
○ util.isArray(object)
○ util.isRegExp(object)
○ util.isDate(object)
○ util.isError(object)
○ util.pump(readableStream, writableStream, [callback])
○ util.inherits(constructor, superConstructor)
工具
稳定性:4 - API 冻结这些函数在模块 ‘util‘ 中。使用 require(‘util‘) 来访问它们。
util.format(format, [...])
返回一个格式化的字符串,第一个参数作为 printf 形式的格式使用。
第一个参数是一个包含0个或多个占位符的字符串。每个占位符被它相应的参数转换过来的值所替换。支持的占位符:
● %s - 字符串。
● %d - 数值(包括整数和浮点数)。
● %j - JSON。
● % - 单个百分号(‘%‘)。这不会消耗一个参数。
如果占位符没有相应的参数,它不会被替换。
1 util.format(‘%s:%s‘, ‘foo‘); // ‘foo:%s‘
如果参数比占位符更多,额外的参数均使用 util.inspect() 转换成字符串,并将得到的字符串使用空格分隔连接起来。
1 util.format(‘%s:%s‘, ‘foo‘, ‘bar‘, ‘baz‘); // ‘foo:bar baz‘
如果第一个参数不是格式化字符串那么 util.format() 返回一个将所有参数使用空格分隔连接起来的字符串。每个参数使用 util.inspect() 转换成字符串。
1 util.format(1, 2, 3); // ‘1 2 3‘
util.debug(string)
一个同步输出函数。将阻塞进程并立即向 stderr 输出 string。
1 require(‘util‘).debug(‘message on stderr‘);
util.error([...])
和 util.debug() 一样,除了这将把所有参数立即输出到 stderr。
util.puts([...])
一个同步输出函数。阻塞进程并将所有参数每个都以换行符结束输出到 stdout。
util.print([...])
一个同步输出函数。将阻塞进程,把所有参数连接成字符串然后输出到 stdout。不在每个参数后面添加换行符。
util.log(string)
向 stdout 输出时间戳。
1 require(‘util‘).log(‘Timestamped message.‘);
util.inspect(object, [options])
返回一个表示 object 的字符串,那对调试是很有用的。
可以传递一个可选的 options 对象,用以改变格式化字符串的某些方面。
● showHidden - 如果为 true,那么对象的不可枚举属性将也能被显示。默认为 false。
● depth - 告诉 inspect 当格式化对象时递归多少次。这在查看非常复杂的对象时是很有用的。默认为2。想让它无限递归传递 null。
● colors - 如果为 true,那么那么输出将使用 ANSI 颜色代码风格。默认为 false。颜色可以定做,见下文。
● customInspect - 如果为 false,那么定义在正在被查看的对象上的定制 inspect() 函数将不会被调用。默认为 true。
查看 util 对象所有属性的例子:
1 var util = require(‘util‘); 2 console.log(util.inspect(util, { showHidden: true, depth: null}));
Customizing util.inspect colors
给 util.inspect 的输出着色(如果被激活)是全局可定制的,只要通过 util.inspect.styles 和 util.inspect.colors 对象。
util.inspect.styles 是一个为每个样式分配一个 util.iinspect.colors 中的颜色的映射。高亮样式和它们的默认值是:数值(黄色),布尔值(黄色),字符串(绿色),日期(洋红),正则表达式(红色),null(粗体),undefined(灰色),特殊情况——这时候只会是函数(青色)* 属性名(故意地不加样式)
预定义的颜色代号:白色,灰色,黑色,蓝色,青色,绿色,洋红和黄色。也有粗体,斜体,下划线和反相代号。
对象也可以定义它们自己的 inspect(depth) 函数来让 util.inspect() 调用并在查看对象时使用其返回结果。
1 var util = require(‘util‘); 2 3 var obj = { name: ‘nate‘ }; 4 obj.inspect = function(depth) { 5 return ‘{‘ + this.name + ‘}‘; 6 }; 7 8 util.inspect(obj); 9 //"{nate}"
util.isArray(object)
如果给出的“对象”是一个数组则返回 true。否则返回 false。
1 var util = require(‘util‘); 2 3 util.isArray([]) 4 // true 5 util.isArray(new Array) 6 // true 7 util.isArray({}) 8 // false
util.isRegExp(object)
如果给出的“对象”是一个正则表达式则返回 true。否则返回 false。
1 var util = require(‘util‘); 2 3 util.isRegExp(/some regexp/) 4 // true 5 util.isRegExp(new RegExp(‘another regexp‘)) 6 // true 7 util.isRegExp({}) 8 // false
util.isDate(object)
如果给出的“对象”是一个日期则返回 true。否则返回 false。
1 var util = require(‘util‘); 2 3 util.isDate(new Date()) 4 // true 5 util.isDate(Date()) 6 // false (without ‘new‘ returns a String) 7 util.isDate({}) 8 // false
util.isError(object)
如果给出的“对象”是一个错误则返回 true。否则返回 false。
1 var util = require(‘util‘); 2 3 util.isError(new Error()) 4 // true 5 util.isError(new TypeError()) 6 // true 7 util.isError({ name: ‘Error‘, message: ‘an error occurred‘ }) 8 // false
util.pump(readableStream, writableStream, [callback])
稳定性:0 - 反对:使用 readableStream.pipe(writableStream)
从 readableStream 读取数据并将其发送到 writableStream。当 writableStream.write(data) 返回 false,readableStream 将暂停直到 writableStream 发生了 drain 事件。callback 有一个错误作为它的唯一参数,且当 writableStream 关闭或错误发生时被调用。
util.inherits(constructor, superConstructor)
从一个构造函数继承原型上的方法到另一个构造函数。constructor 的原型将设置为一个从 superConstructor 创建的新对象。
作为一个附加的便利,superConstructor 可以通过 constructor.super_ 属性访问。
1 var util = require("util"); 2 var events = require("events"); 3 4 function MyStream() { 5 events.EventEmitter.call(this); 6 } 7 8 util.inherits(MyStream, events.EventEmitter); 9 10 MyStream.prototype.write = function(data) { 11 this.emit("data", data); 12 } 13 14 var stream = new MyStream(); 15 16 console.log(stream instance of events.EventEmitter); // true 17 console.log(MyStream.super_ === events.EventEmitter); // true 18 19 stream.on("data", function(data) { 20 console.log(‘Reveived data: "‘ + data + ‘"‘); 21 }) 22 stream.write("It works!"); // Received data: "It works!"