当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。