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]]])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。