“util”模塊提供用於調試目的的‘utility’函數。要訪問這些函數,我們需要通過“ require(‘util’)”對其進行調用。
util.inspect()(在v0.3.0中添加)方法是util模塊的內置應用程序編程接口,用於調試並返回對象的字符串表示形式。 util.inspect()方法與程序無關。它返回可以隨時更改以更改結果的輸出,可以通過補充選項(例如showHidden,depth)。對於檢查的值,它使用構造函數名稱或@@ toStringTag來創建可識別的標記。
用法:
const util = require('util'); util.inspect(object[, options])
參數:此函數接受上述和以下描述的兩個參數:
-
object <any>:任何類,函數,對象或JavaScript原語。
-
選項 <對象>:選項為‘object’類型,可以接受數據的JSON形式。
- showHidden <布爾值>:默認情況下,對象的值設置為“ False”,如果將其設置為‘true’,則它將開始在格式化結果中顯示隱藏的不可枚舉的符號和屬性,以及用戶定義的原型,WeakMap和WeakSet條目。
- 深度<編號>:默認情況下,對象的值設置為“ 2”。它指定要遞歸多少次,以及在檢查大型對象時將調用堆棧大小傳遞給Infinity或null,以遞歸最大。
- 顏色<布爾值>:默認情況下,對象的值設置為“ False”,如果設置為‘true’,則輸出將獲得帶有ANSI顏色代碼的彩色樣式。
- customInspect<布爾值>:默認情況下,對象的值設置為‘true’,如果設置為‘false’,則不調用[[util.inspect.custom](depth,opts)]函數。
- showProxy<布爾值>:默認情況下,對象的值設置為“ False”,如果將其設置為‘true’,則代理檢查將包括目標對象和處理程序對象。
- maxArrayLength<整數>:默認情況下,對象的值設置為“ 100”。指定格式化的最大長度時,即格式化結果中需要包含多少個Array,WeakMap和WeakSet。要不顯示(0)個元素,請將值設置為0或負數,並顯示所有元素,將值設置為Infinity或null。
- maxStringLength<整數>:默認情況下,對象的值設置為“無窮大”。格式化時指定了最大字符長度,即格式化結果中要包括的字符長度。要不顯示任何字符,請將值設置為0或負數,並顯示所有元素,將值設置為Infinity或null。
- breakLength<整數>:默認情況下,對象的值設置為“ 80”。格式化時,它指定輸入值跨多行分割的最大長度。要在一行中格式化輸入,請將其設置為Infinity。
- 已排序<布爾值> | <函數>:默認情況下,對象的值設置為‘false’,如果將其設置為‘true’或傳遞了函數,則所有屬性均按格式化的字符串排序。如果設置為‘true’,則使用默認排序;如果設置為函數,則將其用作比較函數。
- 吸氣劑<布爾值> | <string>:默認情況下,對象的值設置為‘false’,如果將其設置為‘true’,則將檢查吸氣劑。如果將其設置為‘get’,則僅會檢查吸氣劑。如果將其設置為‘set’,則僅會檢查具有相應設置器的吸氣劑。取決於吸氣劑函數,這種副作用的風險很高。
返回值: <string>:返回表示對象的格式化字符串。
範例1: 文件名:index.js
// Node.js syntax to demonstrate
// the util.inspect() method
// Importing util library
const util = require('util');
// Object
const nestedObject = {};
nestedObject.a = [nestedObject];
nestedObject.b = [['a', ['b']], 'b', 'c', 'd'];
nestedObject.b = {};
nestedObject.b.inner = nestedObject.b;
nestedObject.b.obj = nestedObject;
// Inspect by basic method
console.log("1.>", util.inspect(nestedObject));
// Random class
class geeksForGeeks { }
// Inspecting geeksForGeeks class
console.log("2.>", util.inspect(new geeksForGeeks()));
// Inspect by passing options to method
console.log("3.>", util.inspect(
nestedObject, true, 0, false));
// Inspect by calling option name
console.log("4.>", util.inspect(nestedObject,
showHidden = false, depth = 0, colorize = true));
// Inspect by passing in JSON format
console.log("5.>", util.inspect(nestedObject,
{ showHidden:false, depth:0, colorize:true }));
// Inspect by directly calling inspect from 'util'
const { inspect } = require('util');
// Directly calling inspect method
// with single property
console.log("6.>", inspect(nestedObject),
{ colorize:true });
// Directly passing the JSON data
console.log("7.>", util.inspect([
{ name:"Amit", city:"Ayodhya" },
{ name:"Satyam", city:"Lucknow" },
{ name:"Sahai", city:"Lucknow" }],
false, 3, true));
// Directly calling inspect method with single property
console.log("8.>", inspect(nestedObject), { depth:0 });
使用以下命令運行index.js文件:
node index.js
輸出:
1.> <ref *1> { a:[ [Circular *1] ], b:<ref *2> { inner:[Circular *2], obj:[Circular *1] } } 2.> geeksForGeeks {} 3.> { a:[Array], b:[Object] } 4.> { a:[Array], b:[Object] } 5.> { a:[Array], b:[Object] } 6.> <ref *1> { a:[ [Circular *1] ], b:<ref *2> { inner:[Circular *2], obj:[Circular *1] } } { colorize:true } 7.> [ { name:'Amit', city:'Ayodhya' }, { name:'Satyam', city:'Lucknow' }, { name:'Sahai', city:'Lucknow' } ] 8.> <ref *1> { a:[ [Circular *1] ], b:<ref *2> { inner:[Circular *2], obj:[Circular *1] } } { depth:0 }
範例2: 文件名:index.js
// Node.js syntax to demonstrate the
// util.inspect() method
// Import the util module
const util = require('util');
const { inspect } = require('util');
// Importing http module
var http = require('http');
// Inspecting http module
console.log("1.>", util.inspect(http, {
showHidden:false,
depth:0, showProxy:false
}));
// Inspecting console module
console.log("2.>", util.inspect(
console, showHidden = false,
depth = 0, showProxy = true));
// Creating array filled with default value 1
const inspectArray = Array(108).fill(1);
// Prints the truncated array
console.log("3.>", inspectArray);
util.inspect.defaultOptions.maxArrayLength = null;
// Prints the full array
console.log("4.>", inspectArray);
const object = {
amit:[1, 2, [[
'alfa_romeo, spp___, sahai_harshit ' +
'Annapurna, chai paratha.',
'chota',
'bong']], 55],
vikas:new Map([
['alfa', 1], ['romeo', 'data']])
};
// Returns the compact view output.
console.log("5.>", util.inspect(object, {
compact:true, depth:5,
breakLength:80
}));
// Returns the output more reader friendly.
console.log("6.>", util.inspect(object, {
compact:false, depth:5,
breakLength:80
}));
const object1 = { alfa:10 };
const object2 = { beta:20 };
// Creating weakSet
const inspectingWeakset =
new WeakSet([object1, object2]);
console.log("7.>", inspect(
inspectingWeakset, { showHidden:true }));
// Output { { alfa:10 }, { beta:20 } }
object2[util.inspect.custom] = (depth) => {
return { alfaa:'romeo' };
};
console.log("8.>", util.inspect(object2));
// Prints:"{ alfaa:'romeo' }"
使用以下命令運行index.js文件:
node index.js
輸出:
1.> { _connectionListener:[Function:connectionListener], …. globalAgent:[Getter/Setter]}
2.> { log:[Function:bound consoleCall], …..[Symbol(kFormatForStderr)]:[Function:bound ]}
3.> [ 1, 1, 1, 1, 1, 1, ………1, 1, 1, 1, 1, … 8 more items]
4.> [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ….1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
5.> { amit:[ 1, 2, [ [ ‘alfa_romeo, spp___, sahai_harshit Annapurna, chai paratha.’,
‘chota’, ‘bong’ ] ], 55 ], vikas:Map(2) { ‘alfa’ => 1, ‘romeo’ => ‘data’ } }
6.> returns the output more reader friendly.
7.> WeakSet { { alfa:10 }, { beta:20 } }
8.> { alfaa:‘romeo’ }
使用第一個參數作為printf-like格式,util.format(format [,…])方法也提供與格式化字符串相同的結果。
參考:https://nodejs.org/api/util.html#util_util_inspect_object_options
相關用法
- Node.js console.timeLog()用法及代碼示例
- Node.js GM bordercolor()用法及代碼示例
- Node.js GM border()用法及代碼示例
- Node.js GM sharpen()用法及代碼示例
- Node.js GM spread()用法及代碼示例
- Node.js GM write()用法及代碼示例
- Node.js GM flip()用法及代碼示例
- Node.js GM chop()用法及代碼示例
- Node.js GM edge()用法及代碼示例
- Node.js GM implode()用法及代碼示例
- Node.js GM recolor()用法及代碼示例
- Node.js GM randomThreshold()用法及代碼示例
- Node.js GM channel()用法及代碼示例
- Node.js GM flop()用法及代碼示例
- Node.js GM whiteThreshold()用法及代碼示例
注:本文由純淨天空篩選整理自vikas_g大神的英文原創作品 Node.js util.inspect() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。