當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js util.inspect()用法及代碼示例


“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




相關用法


注:本文由純淨天空篩選整理自vikas_g大神的英文原創作品 Node.js util.inspect() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。