util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足。
util.inherits
util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。
JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有 提供对象继承的语言级别特性,而是通过原型复制来实现的
用法:util.inherits(类1, 被继承的类2);
注意:类1 仅仅继承了类2在原型中定义的函数,而构造函数内部创造的属性和函数都没有被继承。
同时,在原型中定义的属性不会被console.log 作 为对象的属性输出。
一般不推荐使用 inherits,而使用ES6 的 class
和 extends
:
const EventEmitter = require('events'); class MyStream extends EventEmitter { constructor() { super(); } write(data) { this.emit('data', data); } }
util.inspect
util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出。它至少接受一个参数 object,即要转换的对象。
showHidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。
depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多少。如果不指定depth,默认会递归2层,指定为 null 表示将不限递归层数完整遍历对象。 如果color值为 true,输出格式将会以ANSI 颜色编码,通常用于在终端显示更漂亮 的效果。
特别要指出的是,util.inspect并不会简单地直接把对象转换为字符串,即使该对象定义了toString 方法也不会调用。
更多参数:
showHidden
<boolean> 如果为true
,则object
的不可枚举的符号与属性也会被包括在格式化后的结果中。 默认为false
。depth
<number> 指定格式化object
时递归的次数。 这对查看大型复杂对象很有用。 默认为2
。 若要无限地递归则传入null
。colors
<boolean> 如果为true
,则输出样式使用 ANSI 颜色代码。 默认为false
。 颜色可自定义,详见自定义util.inspect
颜色。customInspect
<boolean> 如果为false
,则object
上自定义的inspect(depth, opts)
函数不会被调用。 默认为true
。showProxy
<boolean> 如果为true
,则Proxy
对象的对象和函数会展示它们的target
和handler
对象。 默认为false
。maxArrayLength
<number> 指定格式化时数组和TypedArray
元素能包含的最大数量。 默认为100
。 设为null
则显式全部数组元素。 设为0
或负数则不显式数组元素。breakLength
<number> 一个对象的键被拆分成多行的长度。 设为Infinity
则格式化一个对象为单行。 默认为60
。
object
的字符串表示,主要用于调试。 附加的 options
可用于改变格式化字符串的某些方面。format函数根据第一个参数,返回一个格式化字符串,第一个参数是一个可包含零个或多个占位符的字符串。每一个占位符被替换为与其对应的转换后 的值,支持的占位符有:"%s(字符串)"、"%d(数字<整型和浮点型>)"、"%j(JSON)"、"%(单独一个百分号则不作为一个参 数)"。
1:如果占位符没有相对应的参数,占位符将不会被替换.如示例:
- var util = require('util');
- var result = util.format('%s:%s', 'foo');
- console.log(result);
运行结果:
- 'foo:%s'
2:如果有多个参数占位符,额外的参数将会调用util.inspect()转换为字符串。这些字符串被连接在一起,并且以空格分隔。如示例:
- var util = require('util');
- var result = util.format('%s:%s', 'foo', 'bar', 'baz');
- console.log(result);
运行结果:
- 'foo:bar baz'
3:如果第一个参数是一个非格式化字符串,则会把所有的参数转成字符串并以空格隔开拼接在一块,而且返回该字符串。如示例:
- var util = require('util');
- var result = util.format(1, 2, 3);
- console.log(result);
运行结果:
- '1 2 3'