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