Node.js API详解之 util模块用法实例分析

2020-06-17 07:51:26易采站长站整理

//如果占位符没有对应的参数,则占位符不被替换。
formatString = util.format('%s , %s', 'hello');
console.log(formatString);
//输出: hello , %s
//如果传入的参数比占位符的数量多,则多出的参数会被强制转换为字符串,
//然后拼接到返回的字符串,参数之间用一个空格分隔。
formatString = util.format('%s , %s', 'hello', 'isjs', '!');
console.log(formatString);
//输出: hello , isjs !
//如果第一个参数不是一个字符串,则返回一个所有参数用空格分隔并连在一起的字符串
formatString = util.format(1, 2, 3);
console.log(formatString);
//输出: 1 2 3
//如果只传入占位符而不传入参数,则原样返回
formatString = util.format('%% , %s');
console.log(formatString);
//输出: %% , %s

util.inherits(constructor, superConstructor)

说明:

注意,不建议使用 util.inherits()。 请使用 ES6 的 class 和 extends 关键词获得语言层面的继承支持。
从一个构造函数中继承原型方法到另一个。
constructor 的 prototype 会被设置到一个从 superConstructor 创建的新对象上。
superConstructor 可通过 constructor.super_ 属性访问

demo:


const util = require('util');
const EventEmitter = require('events');
function MyStream() {
EventEmitter.call(this);
}
util.inherits(MyStream, EventEmitter);
MyStream.prototype.write = function(data) {
this.emit('data', data);
};
const stream = new MyStream();
console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true
stream.on('data', (data) => {
console.log(`接收的数据:"${data}"`);
});
stream.write('运作良好!'); // 接收的数据:"运作良好!"
//建议使用 ES6 的 class 和 extends:
const EventEmitter = require('events');
class MyStream extends EventEmitter {
write(data) {
this.emit('data', data);
}
}
const stream = new MyStream();
stream.on('data', (data) => {
console.log(`接收的数据:"${data}"`);
});
stream.write('使用 ES6');

util.inspect(object[, options])

说明:

方法返回 object 的字符串表示,主要用于调试。
object: 任何 JavaScript 原始值或对象
options: 可用于改变格式化字符串的某些方面。

demo:


const util = require('util');
const inspectOpt = {
showHidden: false,//如果为 true,则 object 的不可枚举的符号与属性也会被包括在格式化后的结果中。
depth: 2,//指定格式化 object 时递归的次数。 默认为 2。 若要无限地递归则传入 null。
colors: false,//如果为 true,则输出样式使用 ANSI 颜色代码。 默认为 false。