方法和属性


util.isBoolean(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 Boolean,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isBoolean(1)
  3. // false
  4. util.isBoolean(0)
  5. // false
  6. util.isBoolean(false)
  7. // true

util.isNumber(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 Number,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isNumber(false)
  3. // false
  4. util.isNumber(Infinity)
  5. // true
  6. util.isNumber(0)
  7. // true
  8. util.isNumber(NaN)
  9. // true

util.isString(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 String,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isString('')
  3. // true
  4. util.isString('foo')
  5. // true
  6. util.isString(String('foo'))
  7. // true
  8. util.isString(5)
  9. // false

util.isObject(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是一个严格的 Object 并且不是一个 Function,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isObject(5)
  3. // false
  4. util.isObject(null)
  5. // false
  6. util.isObject({})
  7. // true
  8. util.isObject(function(){})
  9. // false

util.isArray(object)

稳定度:0 - 已废弃

Array.isArray 的内部别名。

如果给定的 ‘object’ 是 Array,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isArray([])
  3. // true
  4. util.isArray(new Array)
  5. // true
  6. util.isArray({})
  7. // false

util.isFunction(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 Function,返回 true。否则,返回 false

  1. const util = require('util');
  2. function Foo() {}
  3. var Bar = function() {};
  4. util.isFunction({})
  5. // false
  6. util.isFunction(Foo)
  7. // true
  8. util.isFunction(Bar)
  9. // true

util.isNull(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是严格的 null,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isNull(0)
  3. // false
  4. util.isNull(undefined)
  5. // false
  6. util.isNull(null)
  7. // true

util.isUndefined(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 undefined,返回 true。否则,返回 false

  1. const util = require('util');
  2. var foo;
  3. util.isUndefined(5)
  4. // false
  5. util.isUndefined(foo)
  6. // true
  7. util.isUndefined(null)
  8. // false

util.isNullOrUndefined(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 nullundefined,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isNullOrUndefined(0)
  3. // false
  4. util.isNullOrUndefined(undefined)
  5. // true
  6. util.isNullOrUndefined(null)
  7. // true

util.isSymbol(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 Symbol,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isSymbol(5)
  3. // false
  4. util.isSymbol('foo')
  5. // false
  6. util.isSymbol(Symbol('foo'))
  7. // true

util.isError(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是一个 Error,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isError(new Error())
  3. // true
  4. util.isError(new TypeError())
  5. // true
  6. util.isError({ name: 'Error', message: 'an error occurred' })
  7. // false

注意,这个方法依赖于 Object.prototype.toString() 的行为。当 object 参数操作 @@toStringTag 时,它有可能会获得一个不正确的结果。

  1. // This example requires the `--harmony-tostring` flag
  2. const util = require('util');
  3. const obj = { name: 'Error', message: 'an error occurred' };
  4. util.isError(obj);
  5. // false
  6. obj[Symbol.toStringTag] = 'Error';
  7. util.isError(obj);
  8. // true

util.isRegExp(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 RegExp,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isRegExp(/some regexp/)
  3. // true
  4. util.isRegExp(new RegExp('another regexp'))
  5. // true
  6. util.isRegExp({})
  7. // false

util.isDate(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是 Date,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isDate(new Date())
  3. // true
  4. util.isDate(Date())
  5. // false (without 'new' returns a String)
  6. util.isDate({})
  7. // false

util.isBuffer(object)

稳定度:0 - 已废弃:请使用 Buffer.isBuffer() 代替。

如果给定的 ‘object’ 是 Buffer,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isBuffer({ length: 0 })
  3. // false
  4. util.isBuffer([])
  5. // false
  6. util.isBuffer(new Buffer('hello world'))
  7. // true

util.isPrimitive(object)

稳定度:0 - 已废弃

如果给定的 ‘object’ 是一个基本类型,返回 true。否则,返回 false

  1. const util = require('util');
  2. util.isPrimitive(5)
  3. // true
  4. util.isPrimitive('foo')
  5. // true
  6. util.isPrimitive(false)
  7. // true
  8. util.isPrimitive(null)
  9. // true
  10. util.isPrimitive(undefined)
  11. // true
  12. util.isPrimitive({})
  13. // false
  14. util.isPrimitive(function() {})
  15. // false
  16. util.isPrimitive(/^$/)
  17. // false
  18. util.isPrimitive(new Date())
  19. // false

util.inspect(object[, options])

返回 object 的字符串表示,这对调试有用。

可通过可选选项对象改变格式化字符串的某些方面:

  • showHidden - 如果 true,那么对象的不可枚举和 symbol 属性也将被显示。默认为 false

  • depth - 告诉 inspect 在格式化对象时需要递归多少次。这对遍历大型且复杂的对象很有用。默认为 2。为了使其无限递归需要传 null

  • colors - 如果 true,那么输出将使用 ANSI 颜色代码样式。默认为 false。颜色可以定做,请参阅定制 util.inspect 颜色

  • customInspect - 如果 false,那么自定义在对象上的 inspect(depth, opts) 函数被检查时不会被调用。默认为 true

检查 util 对象所有属性的例子:

  1. const util = require('util');
  2. console.log(util.inspect(util, { showHidden: true, depth: null }));

当他们收到当前所谓的深度递归检查时,和传给 util.inspect() 一样的选项对象值会提供给他们自己定制的 inspect(depth, opts) 函数。

定制 util.inspect 颜色

通过 util.inspect.stylesutil.inspect.colors 对象来全局定制 util.inspect 的颜色输出(如果启用)。

util.inspect.styles 是一个分配每种风格一个从 util.inspect.colors 获得的颜色的映射。高亮显示样式和它们的默认值是:number黄色boolean(黄色)string绿色date(品红)regexp红色null(粗体)undefined灰色special - 此时唯一函数(青色)* name(故意没有样式)

预定义的颜色代码是:whitegreyblackbluecyangreenmagentaredyellow。同样有 bolditalicunderlineinverse 代码。

在对象上定制 inspect() 函数

对象也可以定义自己的 inspect(depth) 函数,util.inspect() 将调用和使用检查对象时的结果:

  1. const util = require('util');
  2. var obj = {
  3. name: 'nate'
  4. };
  5. obj.inspect = function (depth) {
  6. return `{${this.name}}`;
  7. };
  8. util.inspect(obj);
  9. // "{nate}"

你也完全可以返回另一个对象,并且返回的字符串将根据返回对象进行格式化。这类似于 JSON.stringify() 的工作机制:

  1. var obj = {
  2. foo: 'this will not show up in the inspect() output'
  3. };
  4. obj.inspect = function (depth) {
  5. return {
  6. bar: 'baz'
  7. };
  8. };
  9. util.inspect(obj);
  10. // "{ bar: 'baz' }"

util.format(format[, …])

返回使用第一个参数作为一个类 printf 格式的格式化的字符串。

第一个参数是包含零个或多个占位符的字符串。每个占位符替换其对应参数的转换值。支持的占位符:

  • %s - 字符串。

  • %d - 数值(包括整数和浮点数)。

  • %j - JSON。如果参数包含循环引用,则将其替换为字符串 '[Circular]'

  • %% - 百分号('%')。这不消耗参数。

如果占位符没有相应的参数,占位符不被替换。

  1. util.format('%s:%s', 'foo'); // 'foo:%s'

如果有比占位符更多的参数,额外的参数会被强制为字符串(对于对象和 symbol,使用 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.inherits(constructor, superConstructor)

从一个构造函数中继承一个原型方法到另一个。constructor 的属性会被设置到从 superConstructor 创建的新对象上。

另外的好处是,superConstructor 将可以通过 constructor.super_ 属性访问。

  1. const util = require('util');
  2. const EventEmitter = require('events');
  3. function MyStream() {
  4. EventEmitter.call(this);
  5. }
  6. util.inherits(MyStream, EventEmitter);
  7. MyStream.prototype.write = function (data) {
  8. this.emit('data', data);
  9. }
  10. var stream = new MyStream();
  11. console.log(stream instanceof EventEmitter); // true
  12. console.log(MyStream.super_ === EventEmitter); // true
  13. stream.on('data', (data) => {
  14. console.log(`Received data: "${data}"`);
  15. })
  16. stream.write('It works!'); // Received data: "It works!"

util.log(string)

输出带时间戳的 stdout

  1. require('util').log('Timestamped message.');

util.error([…])

稳定度:0 - 已废弃:使用 console.error() 代替。

console.error 的过时前身。

util.debug(string)

稳定度:0 - 已废弃:使用 console.error() 代替。

console.error 的过时前身。

util.debuglog(section)

  • section {String} 进行调试的程序部分

  • 返回:{Function} 日志函数

这是用来创建有条件地写入到一个基于 NODE_DEBUG 环境变量存在的 stderr 的函数。如果 section 名称出现在那个环境变量中,那么返回的函数将类似于 console.error()。如果没有,那么返回一个无操作(空)的函数。

例如:

  1. var debuglog = util.debuglog('foo');
  2. var bar = 123;
  3. debuglog('hello from foo [%d]', bar);

如果程序在环境中运行时带有 NODE_DEBUG=foo,那么会有这样的输出:

  1. FOO 3245: hello from foo [123]

3245 是进程 id,如果不是带着环境变量设置一起运行,那么它不会打印出任何东西。

你可以用逗号分隔的多个 NODE_DEBUG 环境变量。例如,NODE_DEBUG=fs,net,tls

util.print([…])

稳定度:0 - 已废弃:使用 console.log() 代替。

console.log 的过时前身。

util.puts([…])

稳定度:0 - 已废弃:使用 console.log() 代替。

console.log 的过时前身。

util.pump(readableStream, writableStream[, callback])

稳定度:0 - 已废弃:使用 readableStream.pipe(writableStream) 代替。

stream.pipe() 的过时前身。

util.deprecate(function, string)

标志着一个方法不应该再使用。

  1. const util = require('util');
  2. exports.puts = util.deprecate(() => {
  3. for (var i = 0, len = arguments.length; i < len; ++i) {
  4. process.stdout.write(arguments[i] + '\n');
  5. }
  6. }, 'util.puts: Use console.log instead');

它返回一个修正函数,在默认情况下警告一次。

如果设置了 --no-deprecation,那么这是一个无操作(空)的函数。在运行时通过 process.noDeprecation 的 boolean 进行配置(仅在加载模块之前设定时有效)。

如果设置了 --trace-deprecation,在第一次使用已过时的 API 时会将警告和堆栈跟踪记录到控制台中。在运行时通过 process.traceDeprecation 的 boolean 进行配置。

如果设置了 --throw-deprecation,那么当使用已过时的 API 时,应用程序会抛出一个异常。在运行时通过 process.throwDeprecation 的 boolean 进行配置。

process.throwDeprecation 优先于 process.traceDeprecation