util.inspect(object[, showHidden[, depth[, colors]]])
版本 | 变化 |
---|---|
v17.3.0、v16.14.0 | 现在支持 |
v13.0.0 | 循环参考现在包括参考的标记。 |
v14.6.0、v12.19.0 | 如果 |
v13.13.0、v12.17.0 | 现在支持 |
v13.5.0、v12.16.0 | 如果 |
v12.0.0 |
|
v12.0.0 | 内部属性不再出现在自定义检查函数的上下文参数中。 |
v11.11.0 |
|
v11.7.0 | ArrayBuffers 现在也显示它们的二进制内容。 |
v11.5.0 | 现在支持 |
v11.4.0 |
|
v11.0.0 |
|
v11.0.0 | 检查输出现在限制在大约 128 MiB。超过该大小的数据将不会被全面检查。 |
v10.12.0 | 现在支持 |
v10.6.0 | 检查链表和类似对象现在可以达到最大调用堆栈大小。 |
v10.0.0 | 现在也可以检查 |
v9.9.0 | 现在支持 |
v6.6.0 | 自定义检查函数现在可以返回 |
v6.3.0 | 现在支持 |
v6.1.0 | 现在支持 |
v6.1.0 | 现在支持 |
v0.3.0 | 添加于:v0.3.0 |
参数
object
<any> 任何 JavaScript 原语或Object
。options
<Object>showHidden
<boolean> 如果true
,object
的不可枚举符号和属性包含在格式化结果中。WeakMap
WeakSet
false
。depth
<number> 指定格式化object
时递归的次数。这对于检查大型物体很有用。要递归到最大调用堆栈大小,请传递Infinity
或null
。 默认:2
。colors
<boolean>如果true
,输出的样式采用 ANSI 颜色代码。颜色是可定制的。看自定义util.inspect
颜色.默认:false
.customInspect
<boolean> 如果false
,则不调用[util.inspect.custom](depth, opts, inspect)
函数。 默认:true
。showProxy
<boolean>如果true
,Proxy
检查包括target
和handler
对象。默认:false
.maxArrayLength
<integer> 指定格式化时要包含的Array
、TypedArray
WeakMap
WeakSet
null
或Infinity
以显示所有元素。设置为0
或负数以不显示任何元素。 默认:100
。maxStringLength
<integer> 指定格式化时要包含的最大字符数。设置为null
或Infinity
以显示所有元素。设置为0
或负数以不显示字符。 默认:10000
。breakLength
<integer> 输入值被拆分为多行的长度。设置为Infinity
以将输入格式化为单行(结合compact
设置为true
或任何数字 >=1
)。 默认:80
。compact
<boolean> | <integer> 将此设置为false
会导致每个对象键显示在新行上。它将在比breakLength
长的文本中换行。如果设置为一个数字,只要所有属性都适合breakLength
,那么大多数n
内部元素都会合并在一行上。短数组元素也被组合在一起。有关详细信息,请参阅下面的示例。 默认:3
。sorted
<boolean> | <Function> 如果设置为true
或函数,则对象的所有属性以及Set
和Map
条目都将在结果字符串中排序。如果设置为true
,则使用default sort。如果设置为函数,则将其用作 compare function 。getters
<boolean> | <string> 如果设置为true
,则检查吸气剂。如果设置为'get'
,则仅检查没有相应 setter 的 getter。如果设置为'set'
,则仅检查具有相应设置器的 getter。根据 getter 函数,这可能会导致副作用。 默认:false
。numericSeparator
<boolean> 如果设置为true
,则使用下划线分隔所有 bigint 和数字中的每三位。 默认:false
。
- 返回: <string>
object
的表示。
util.inspect()
方法返回用于调试的object
的字符串表示形式。 util.inspect
的输出可能随时更改,不应以编程方式依赖。可能会传递额外的options
来改变结果。 util.inspect()
将使用构造函数的名称和/或 @@toStringTag
为检查的值制作可识别的标签。
class Foo {
get [Symbol.toStringTag]() {
return 'bar';
}
}
class Bar {}
const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });
util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz); // '[foo] {}'
循环引用通过使用引用索引指向它们的锚点:
const { inspect } = require('node:util');
const obj = {};
obj.a = [obj];
obj.b = {};
obj.b.inner = obj.b;
obj.b.obj = obj;
console.log(inspect(obj));
// <ref *1> {
// a: [ [Circular *1] ],
// b: <ref *2> { inner: [Circular *2], obj: [Circular *1] }
// }
以下示例检查 util
对象的所有属性:
const util = require('node:util');
console.log(util.inspect(util, { showHidden: true, depth: null }));
以下示例突出显示了 compact
选项的效果:
const util = require('node:util');
const o = {
a: [1, 2, [[
'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' +
'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.',
'test',
'foo']], 4],
b: new Map([['za', 1], ['zb', 'test']])
};
console.log(util.inspect(o, { compact: true, depth: 5, breakLength: 80 }));
// { a:
// [ 1,
// 2,
// [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line
// 'test',
// 'foo' ] ],
// 4 ],
// b: Map(2) { 'za' => 1, 'zb' => 'test' } }
// Setting `compact` to false or an integer creates more reader friendly output.
console.log(util.inspect(o, { compact: false, depth: 5, breakLength: 80 }));
// {
// a: [
// 1,
// 2,
// [
// [
// 'Lorem ipsum dolor sit amet,\n' +
// 'consectetur adipiscing elit, sed do eiusmod \n' +
// 'tempor incididunt ut labore et dolore magna aliqua.',
// 'test',
// 'foo'
// ]
// ],
// 4
// ],
// b: Map(2) {
// 'za' => 1,
// 'zb' => 'test'
// }
// }
// Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a
// single line.
showHidden
选项允许检查
和 WeakMap
条目。如果条目多于 WeakSet
maxArrayLength
,则无法保证显示哪些条目。这意味着两次检索相同的
条目可能会导致不同的输出。此外,没有剩余强引用的条目可能随时被垃圾收集。WeakSet
const { inspect } = require('node:util');
const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);
console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }
sorted
选项确保对象的属性插入顺序不会影响 util.inspect()
的结果。
const { inspect } = require('node:util');
const assert = require('node:assert');
const o1 = {
b: [2, 3, 1],
a: '`a` comes before `b`',
c: new Set([2, 3, 1])
};
console.log(inspect(o1, { sorted: true }));
// { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } }
console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) }));
// { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' }
const o2 = {
c: new Set([2, 1, 3]),
a: '`a` comes before `b`',
b: [2, 3, 1]
};
assert.strict.equal(
inspect(o1, { sorted: true }),
inspect(o2, { sorted: true })
);
numericSeparator
选项为所有数字每三位添加一个下划线。
const { inspect } = require('node:util');
const thousand = 1_000;
const million = 1_000_000;
const bigNumber = 123_456_789n;
const bigDecimal = 1_234.123_45;
console.log(thousand, million, bigNumber, bigDecimal);
// 1_000 1_000_000 123_456_789n 1_234.123_45
util.inspect()
是一种用于调试的同步方法。其最大输出长度约为 128 MiB。导致较长输出的输入将被截断。
相关用法
- Node.js util.inspect()用法及代码示例
- Node.js util.inspect.custom用法及代码示例
- Node.js util.inspect.defaultOptions用法及代码示例
- Node.js util.inherits(constructor, superConstructor)用法及代码示例
- Node.js util.inherits()用法及代码示例
- Node.js util.isUndefined(object)用法及代码示例
- Node.js util.isObject(object)用法及代码示例
- Node.js util.isString(object)用法及代码示例
- Node.js util.isPrimitive(object)用法及代码示例
- Node.js util.isNull(object)用法及代码示例
- Node.js util.isFunction(object)用法及代码示例
- Node.js util.isArray(object)用法及代码示例
- Node.js util.isNumber(object)用法及代码示例
- Node.js util.isRegExp(object)用法及代码示例
- Node.js util.isSymbol(object)用法及代码示例
- Node.js util.isNullOrUndefined(object)用法及代码示例
- Node.js util.isBoolean(object)用法及代码示例
- Node.js util.isBuffer(object)用法及代码示例
- Node.js util.isError(object)用法及代码示例
- Node.js util.isDate(object)用法及代码示例
- Node.js util.isDeepStrictEqual()用法及代码示例
- Node.js util.types.isInt16Array(value)用法及代码示例
- Node.js util.types.isNativeError(value)用法及代码示例
- Node.js util.types.isArrayBufferView(value)用法及代码示例
- Node.js util.types.isMap(value)用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 util.inspect(object[, showHidden[, depth[, colors]]])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。