当前位置: 首页 > article >正文

Node.js——util工具模块

util工具模块1、util模块概述2、util模块的使用2.1、格式化输出字符串2.2、将对象转换为字符串调试2.3、实现对象间的原型继承2.4、转换异步函数的风格2.5、判断是否为指定类型的内置对象2.6、其它方法1、util模块概述util模块是Node.js的内置模块它提供了常用方法的集合这主要是为了弥补核心JavaScript功能过于精简的不足该模块的主要目的是满足Node.js内部API的需求。引用util模块的语法格式如下constutilrequire(util)util模块的常用方法和功能util.format()字符串格式化util.inspect()将任意对象转换为字符串对象深度查看调试神器util.promisify()将 Node.js 回调风格函数​ 转为 Promiseutil.callbackify()Promise → 回调util.types精准类型判断util.deprecate()标记废弃方法util.inherits()用于实现原型继承已不推荐util.isDeepStrictEqual(a, b)深度严格比较替代 assert.deepStrictEqualutil.getSystemErrorName(errno)获取系统错误名2、util模块的使用2.1、格式化输出字符串util模块提供了format()方法用来对字符串进行格式化其语法格式如下util.format(format,[...])参数format是包含零个或多个占位符的字符串每个占位符都是以一个%字符开始并最终被对应的参数转换的字符串值取代。format方法支持的占位符有以下类型。%s指定字符串。%d指定数值。%i转换为整数。%f转换为小数。%j转换为JSON字符串。%o转换为具有通用JavaScript对象格式的字符串表示形式与util.inspect()类似它显示了完整的对象以及不可枚举的属性。%O与%o相似但没有选项它不包含不可枚举的属性。%%输出%。返回值格式化后的字符串。constutilrequire(util)classPerson{constructor(name,age){this.namename;this.ageage;}showName(){returnthis.name;}}letmannewPerson(老张,60);console.log(util.format(%d%d%d,50,70,5070))console.log(util.format(字符串%s,man.showName()));console.log(util.format(整数%i,26.01))console.log(util.format(小数%f,26.01))console.log(util.format(百分数%d%%,26))console.log(util.format(对象格式化为JSON%j,man))5070120 字符串老张 整数26 小数26.01 百分数26% 对象格式化为JSON{name:老张,age:60}2.2、将对象转换为字符串调试util模块提供了一个inspect()方法用于将任意对象转换为字符串该方法通常用于调试和错误输出其语法格式如下util.inspect(object[,showHidden[,depth[,colors]]])depth展开层级null表示无限colors启用颜色showHidden显示不可枚举属性其中参数object是必需的参数用来指定一个对象参数showHidden为true时将会显示更多的关于object对象的隐藏信息参数depth表示最大递归层数用于对象比较复杂时指定对象的递归层数参数colors的值若为true表示输出格式将会以ANSI颜色编码通常用于在终端上显示更漂亮的效果。constutilrequire(util)classPerson{constructor(name,age){this.namename;this.ageage;}showName(){returnthis.name;}}letmannewPerson(老张,60);console.log(util.inspect(man));console.log(util.inspect(man,true));Person { name: 老张, age: 60 } Person { name: 老张, age: 60 }2.3、实现对象间的原型继承util模块提供了一个inherits()方法用于实现对象间的原型继承其语法格式如下util.inherits(constructor,superConstructor)参数constructor表示要从原型继承的任何对象参数superConstructor表示要继承的原型对象。varutilrequire(util);functionpar(){this.name老张;this.age60;this.sayfunction(){console.log(this.name今年this.age岁);};}par.prototype.showNamefunction(){console.log(我是this.name);};functionch(){this.name小张;}util.inherits(ch,par);varobjBasenewpar();objBase.showName();objBase.say();console.log(objBase);varobjSubnewch();objSub.showName();console.log(objSub);我是老张 老张今年60岁 par{name:老张,age:60,say:[Function(anonymous)]}我是小张 ch{name:小张}通过上面的结果可以看出ch仅继承了par在原型中定义的函数而构造函数内部的age属性、say函数都没有被继承这一点大家使用时要注意。2.4、转换异步函数的风格util模块中的callbackify()方法可以将async异步函数或者一个返回值为Promise的函数转换成遵循错误优先回调风格的函数其语法格式如下util.callbackify(async_function)参数async_function表示原始的async异步函数该方法的返回值是一个以错误优先回调风格返回的Promise函数基本形式为(err,ret){}第一个参数是错误原因。例如定义一个异步函数fn使用util模块的callbackify()对其进行风格转换然后执行转换风格后的异步函数其中传入一个错误优先风格的回调函数function(err,ret)。代码如下constutilrequire(util);asyncfunctionfn(){return这是一个函数;}constcallbackFunctionutil.callbackify(fn);callbackFunction((err,ret){if(err)throwerr;console.log(ret);});这是一个函数2.5、判断是否为指定类型的内置对象除了上面常用的一些方法util模块中还提供了一个types类型通过调用该类型的一些方法可以为不同类型的内置对象提供类型检查。常用的类型检查方法如下。util.types.isAnyArrayBuffer(value)判断value是否为内置的ArrayBuffer或SharedArrayBuffer实例。constutilrequire(util)console.log(util.types.isAnyArrayBuffer(newArrayBuffer()));console.log(util.types.isAnyArrayBuffer(newSharedArrayBuffer()));true trueutil.types.isArrayBufferView(value)判断value是否为ArrayBuffer视图的实例。constutilrequire(util)console.log(util.types.isArrayBufferView(newInt8Array()));//trueconsole.log(util.types.isArrayBufferView(Buffer.from(你好)));//trueconsole.log(util.types.isArrayBufferView(newArrayBuffer()));//falseutil.types.isArrayBuffer(value)判断value是否为内置的ArrayBuffer实例。constutilrequire(util);console.log(util.types.isArrayBuffer(newArrayBuffer()));//trueconsole.log(util.types.isArrayBuffer(newSharedArrayBuffer()));//falseutil.types.isAsyncFunction(value)判断value是否为异步函数。constutilrequire(util);console.log(util.types.isAsyncFunction(functionfunc(){}));//falseconsole.log(util.types.isAsyncFunction(asyncfunctionfunc(){}));//trueutil.types.isBooleanObject(value)判断value是否为布尔类型。constutilrequire(util)console.log(util.types.isBooleanObject(false));//falseconsole.log(util.types.isBooleanObject(false));//falseconsole.log(util.types.isBooleanObject(newBoolean(false)));//trueconsole.log(util.types.isBooleanObject(newBoolean(true)));//trueconsole.log(util.types.isBooleanObject(Boolean(false)));//falseutil.types.isBoxedPrimitive(value)判断value是否为原始对象如new Boolean()、new String()等。constutilrequire(util)console.log(util.types.isBoxedPrimitive(newBoolean(false)));//trueconsole.log(util.types.isBoxedPrimitive(newString(string)));//trueconsole.log(util.types.isBoxedPrimitive(string));//falseutil.types.isDate(value)判断value是否为Date的实例。constutilrequire(util);console.log(util.types.isDate(newDate()));//trueconsole.log(util.types.isDate(newDate(2023,6,18)));//trueutil.types.isNumberObject(value)判断value是否为Number对象。constutilrequire(util);console.log(util.types.isNumberObject(0));//falseconsole.log(util.types.isNumberObject(newNumber()));//trueconsole.log(util.types.isNumberObject(newNumber(0)));//trueutil.types.isRegExp(value)判断value是否为一个正则表达式。constutilrequire(util);console.log(util.types.isRegExp(/^\w$/));//trueconsole.log(util.types.isRegExp(newRegExp(abc)));//trueutil.types.isStringObject(value)判断value是否为一个String对象。constutilrequire(util);console.log(util.types.isStringObject(string));//falseconsole.log(util.types.isStringObject(newString(string)));//true2.6、其它方法Node.js 回调风格函数​ 转为 Promiseconstfsrequire(fs);constreadFileAsyncutil.promisify(fs.readFile);asyncfunctionrun(){constdataawaitreadFileAsync(./test.txt,utf8);console.log(data);}run();标记废弃方法functionoldApi(){console.log(old api);}constnewApiutil.deprecate(oldApi,oldApi is deprecated, use newApi instead);newApi();

相关文章:

Node.js——util工具模块

util工具模块1、util模块概述2、util模块的使用2.1、格式化输出字符串2.2、将对象转换为字符串(调试)2.3、实现对象间的原型继承2.4、转换异步函数的风格2.5、判断是否为指定类型的内置对象2.6、其它方法1、util模块概述 util模块是Node.js的内置模块&a…...

Spring Cloud集成Nacos配置中心常见问题解析

1. Spring Cloud集成Nacos配置中心常见问题解析 在微服务架构中,配置中心是必不可少的基础组件。Nacos作为阿里巴巴开源的一款集服务发现、配置管理于一体的中间件,凭借其轻量级、高可用等特性,已经成为Spring Cloud生态中配置中心的热门选择…...

Android Framework开发工程师深度解析与技术指南

引言 在移动智能设备普及的今天,Android系统作为全球主流的操作系统,其Framework层开发是支撑整个生态的核心。Android Framework开发工程师负责系统架构设计、深度定制与兼容性优化,确保设备高效运行。本文将基于职位描述的核心要素,系统解析Android Framework开发的技术…...

Cursor 2.2的Visual Editor实战:如何像改Figma一样,5分钟重构一个Vue/React页面布局

Cursor 2.2的Visual Editor实战:如何像改Figma一样,5分钟重构一个Vue/React页面布局 重构老旧前端页面就像给老房子翻新——既要保留主体结构,又要让外观焕然一新。传统方式下,我们不得不在代码编辑器与浏览器之间反复切换&#x…...

文脉定序详细步骤:自定义prompt模板提升BGE-m3在垂直领域表现

文脉定序详细步骤:自定义prompt模板提升BGE-m3在垂直领域表现 1. 理解文脉定序与BGE-m3的核心价值 文脉定序是一款基于BGE-m3模型的智能语义重排序系统,专门解决传统搜索引擎"搜得到但排不准"的痛点。它通过全交叉注意机制,对问题…...

从无人机到扫地机器人:拆解VIO技术如何成为智能设备的‘隐形大脑’

从无人机到扫地机器人:拆解VIO技术如何成为智能设备的‘隐形大脑’ 当科沃斯T20扫地机器人在复杂家居环境中精准避开宠物食盆时,当大疆Mavic 3无人机在峡谷间自主返航时,背后都隐藏着一项关键技术——视觉惯性里程计(VIO&#xff…...

Claude Code 命令和用法

斜杠命令(会话内输入 / 触发)会话与导航命令说明/clear清除对话历史,释放上下文。别名:/reset、/new/compact [指令]压缩对话,可附加聚焦指令/resume [会话]恢复历史会话。别名:/continue/rename [名称]重命…...

2026大厂校招笔试指南(高频考点+真实趋势)

关注 霍格沃兹测试学院公众号,回复「资料」,领取人工智能测试开发技术合集很多人现在卡在同一个问题上:题也刷了,时间也花了,但一到笔试还是过不了。你可能也有这种感觉:简单题会做,中等题卡住&…...

AMD显卡AI部署实战指南:ROCm模型运行与性能优化

AMD显卡AI部署实战指南:ROCm模型运行与性能优化 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/gh_mirrors/ol/ollama-for…...

HPKM-PINN:KAN-MLP并行混合物理信息神经网络技术 第1章 KAN基础与MLP局限的理论分析(二)

脚本 2.1.2.2:激活函数选择——Tanh 与 SwiGLU 在物理约束中的适应性 涉及内容:对比分析 Tanh 与 SwiGLU 激活函数在物理信息神经网络中的适应性,验证不同物理约束(如边界条件、守恒律)下的数值稳定性。 使用方式:运行脚本生成激活函数特性对比、物理约束满足度分析及梯…...

Wan2.2-T2V-A5B保姆级使用指南:手把手教你用文字秒出创意视频

Wan2.2-T2V-A5B保姆级使用指南:手把手教你用文字秒出创意视频 1. 为什么选择Wan2.2-T2V-A5B? 在短视频内容爆炸式增长的今天,快速将创意转化为视频内容已经成为刚需。Wan2.2-T2V-A5B正是为解决这一需求而生的轻量级文本到视频生成模型。 这…...

OWL ADVENTURE 作业批改场景应用:自动识别手写算式与批阅

OWL ADVENTURE 作业批改场景应用:自动识别手写算式与批阅 1. 引言 想象一下,一位数学老师晚上十点还在台灯下,面前堆着厚厚一摞作业本,需要逐题检查、打勾、画叉,再写上评语。日复一日,这种重复性劳动不仅…...

FGA智能自动战斗全攻略:解放双手,高效玩转F/GO

FGA智能自动战斗全攻略:解放双手,高效玩转F/GO 【免费下载链接】FGA FGA - Fate/Grand Automata,一个为F/GO游戏设计的自动战斗应用程序,使用图像识别和自动化点击来辅助游戏,适合对游戏辅助开发和自动化脚本感兴趣的程…...

安装lsaac lab

在 Ubuntu 22.04 环境下,使用 Conda 管理 Isaac Lab 是最稳妥的方案,因为它可以完美隔离 Isaac Sim 所需的特定 Python 版本环境。以下是基于 Conda 的保姆级安装步骤:第一步:创建 Conda 环境Isaac Sim 4.x 需要 Python 3.10&…...

Node.js版本管理神器NVM:从安装到实战的保姆级教程(Mac版)

Node.js版本管理神器NVM:从安装到实战的保姆级教程(Mac版) 作为一名长期在Mac环境下工作的前端开发者,我深刻体会到Node.js版本管理的重要性。不同项目可能依赖不同版本的Node.js,而手动切换版本不仅麻烦还容易出错。N…...

DFT工程师的隐藏技巧:深入解读TestMAX中Shared与Dedicated Wrapper Cell的选择策略

DFT工程师的隐藏技巧:深入解读TestMAX中Shared与Dedicated Wrapper Cell的选择策略 在芯片设计的可测试性设计(DFT)领域,Wrapper Cell的选择往往被视为一项"黑盒"操作——工程师们习惯依赖EDA工具自动完成,却…...

G-Helper终极指南:释放华硕笔记本全部潜力的轻量级控制工具

G-Helper终极指南:释放华硕笔记本全部潜力的轻量级控制工具 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...

告别手动填表!用CANoe 11.0 (x64)模板快速创建DBC数据库(附Signal/Message避坑指南)

告别手动填表!用CANoe 11.0 (x64)模板快速创建DBC数据库(附Signal/Message避坑指南) 在汽车电子开发领域,DBC数据库的创建往往是工程师们既熟悉又头疼的环节。面对动辄上百个信号的需求表,传统的手动创建方式不仅耗时费…...

记录一次 反射引起的Metaspace OOM 的完整排查

一、问题背景线上某个 Spring Boot 服务偶发出现:java.lang.OutOfMemoryError: MetaspaceJVM 参数中已经限制:-XX:MetaspaceSize512m -XX:MaxMetaspaceSize512m但监控显示:Metaspace used ≈ 370MB Metaspace committed ≈ 508MB看起来仍…...

费雪的竞争优势分析框架

费雪的竞争优势分析框架 关键词:费雪竞争优势分析框架、企业竞争优势、财务分析、行业分析、企业战略 摘要:本文深入探讨了费雪的竞争优势分析框架。该框架是评估企业竞争力的重要工具,通过多维度的分析帮助投资者和企业管理者判断企业在市场中的地位和发展潜力。文章首先介…...

告别996!我用Qoder AI编程平台,一天搞定全栈电商项目(附保姆级实战流程)

从零到上线:Qoder AI全栈电商项目实战手记 凌晨三点的显示器蓝光里,我第17次调试购物车接口时,咖啡杯底黏着的便签写着"再熬三天就能交付"。这个典型的程序员996场景,在上个月使用Qoder开发新电商平台时被彻底颠覆——从…...

“芯”动每一秒:当骁龙的速度脉搏跳动在F1赛道

2026年F1中国大奖赛日前在上海国际赛车场落下帷幕。除了赛道上令人热血沸腾的争夺,本届赛事在商业与科技融合层面同样看点颇多,尤其是冠军车队梅赛德斯-AMG与其官方合作伙伴高通骁龙的深度联动,成为围场内外热议的焦点。当F1这项百年运动不断…...

白春礼院士:科研活动的基本单元正从人向人机系统转变

“AIfor Science(简称为AI4S)的竞争本质上是认知体系的竞争”,3月29日,中国科学院院士白春礼在第二届浦江AI学术年会开幕式上表示,不同科研体系如何理解科学,是以模型为核心,通过高维空间中的模…...

OpenFOAM字典文件关键配置实战指南

1. OpenFOAM字典文件基础认知 第一次接触OpenFOAM的朋友,看到满屏幕的字典文件可能会有点懵。这玩意儿就像乐高积木的说明书,告诉你每个零件该怎么拼。我刚开始用的时候,经常把blockMeshDict和snappyHexMeshDict搞混,结果生成的网…...

ClickHouse连接避坑指南:Python开发者常遇到的5个问题及解决方案

ClickHouse连接避坑指南:Python开发者常遇到的5个问题及解决方案 当Python开发者初次尝试与ClickHouse建立连接时,往往会遇到各种意料之外的障碍。这些看似简单的连接问题,实际上可能隐藏着深层次的配置陷阱或性能瓶颈。本文将深入剖析五个最…...

Memos笔记数据安全吗?手把手教你配置自动备份到GitHub/对象存储(防丢指南)

Memos数据安全全攻略:从本地备份到云端同步的完整方案 Memos作为一款轻量级开源笔记工具,凭借其简洁界面和本地存储特性赢得了不少用户青睐。但数据安全始终是悬在每位用户心头的一把剑——服务器宕机、硬盘损坏、误操作删除都可能让珍贵笔记瞬间消失。本…...

coze-loop应用指南:在数据分析、Web开发等场景下的优化技巧

coze-loop应用指南:在数据分析、Web开发等场景下的优化技巧 1. 工具介绍与核心功能 coze-loop是一款基于Ollama框架的AI代码优化工具,它将复杂的代码优化过程简化为三步操作:选择目标、粘贴代码、获取优化建议。这个工具特别适合需要快速提…...

Flink SQL CDC避坑指南:为什么你的Debezium源表总是漏数据?

Flink SQL CDC数据一致性实战:从Debezium陷阱到高可靠架构设计 在电商大促秒杀和金融交易风控这类对数据一致性要求严苛的场景中,Flink CDC已成为实时数仓建设的核心组件。但当你在凌晨三点收到报警通知,发现订单宽表丢失了关键字段时&#x…...

C语言入门避坑指南:从雨课堂高频错题解析编程新手常见误区

C语言入门避坑指南:从雨课堂高频错题解析编程新手常见误区 刚接触C语言时,很多同学会被看似简单的语法规则绊倒。那些在课堂上反复强调的细节,往往成为考试中最容易丢分的陷阱。本文将结合电子科技大学《程序设计与算法基础I》课程的真实错题…...

为什么我放弃Python选择maxscript开发3dsMax插件?性能对比实测

为什么我放弃Python选择maxscript开发3dsMax插件?性能对比实测 当技术美术(TA)或开发者面临3dsMax插件开发的技术选型时,性能、开发效率和原生集成能力往往是核心考量因素。本文将基于实际测试数据,从执行速度、API调用…...