Skip to content

util 工具模块

util 工具模块

util 模块概述

util 模块是 Node.js 提供的一个实用工具库,包含了很多常用的函数,可以帮助开发者简化一些常见的编程任务。它提供了许多功能,如格式化字符串、转换对象、继承、处理回调等。util 模块是 Node.js 标准库的一部分,因此无需安装,可以直接使用。

可以通过以下方式引入 util 模块:

javascript
const util = require('util');

util 模块的使用

以下是 util 模块中的一些常用功能。

格式化输出字符串

util.format() 方法可以用来格式化字符串,类似于 printf 风格的格式化方法。它可以将多个参数按指定格式组合成一个字符串。

  • 用法:

    javascript
    const util = require('util');
    
    const formattedString = util.format('Hello, %s!', 'world');
    console.log(formattedString);  // 输出:Hello, world!
    
    // 支持多个参数
    const age = 25;
    const name = 'John';
    const info = util.format('%s is %d years old.', name, age);
    console.log(info);  // 输出:John is 25 years old.
  • 格式化符号:

    • %s: 字符串
    • %d: 整数
    • %j: JSON 字符串化(如对象)

将对象转换为字符串

util.inspect() 方法可以将对象转化为一个字符串,便于打印和调试。它是一个非常强大的方法,支持查看对象的内部结构,尤其适用于查看复杂的对象。

  • 用法:

    javascript
    const util = require('util');
    
    const obj = {
      name: 'John',
      age: 25,
      sayHello: function() {
        return 'Hello!';
      }
    };
    
    // 将对象转为字符串
    const objStr = util.inspect(obj);
    console.log(objStr);  // 输出:{ name: 'John', age: 25, sayHello: [Function: sayHello] }
    
    // 可选参数,控制输出的深度等
    const detailedObjStr = util.inspect(obj, { showHidden: true, depth: 2 });
    console.log(detailedObjStr);
  • 常用选项:

    • showHidden: 是否显示对象的不可枚举属性(默认为 false)。
    • depth: 控制打印深度(默认 2null 表示无限制)。
    • colors: 是否使用颜色标记(true 会开启,false 会关闭)。

实现对象间的原型继承

util.inherits() 方法可以用于实现原型继承,即使子类继承父类的属性和方法。这个方法在实现基于原型的继承时非常有用,尤其是对于自定义的构造函数和类。

  • 用法:

    javascript
    const util = require('util');
    
    function Animal(name) {
      this.name = name;
    }
    
    Animal.prototype.sayHello = function() {
      console.log(`${this.name} says hello!`);
    };
    
    function Dog(name, breed) {
      Animal.call(this, name);  // 调用父类构造函数
      this.breed = breed;
    }
    
    util.inherits(Dog, Animal);  // Dog 继承 Animal
    
    const dog = new Dog('Max', 'Golden Retriever');
    dog.sayHello();  // 输出:Max says hello!
    console.log(dog.breed);  // 输出:Golden Retriever

通过 util.inherits(),我们可以让 Dog 类继承 Animal 类的所有方法和属性。

转换异步函数的风格

util.promisify() 方法可以将遵循传统回调风格的异步函数转换为返回 Promise 的形式。这对于现代 JavaScript 中使用 async/await 语法非常有用。

  • 用法:

    假设我们有一个传统的异步函数,使用回调处理结果:

    javascript
    const fs = require('fs');
    
    // 异步读取文件
    fs.readFile('example.txt', 'utf8', function(err, data) {
      if (err) throw err;
      console.log(data);
    });

    使用 util.promisify() 将其转换为返回 Promise 的异步函数:

    javascript
    const util = require('util');
    const fs = require('fs');
    
    const readFilePromise = util.promisify(fs.readFile);
    
    // 使用 async/await 进行异步操作
    async function readFile() {
      try {
        const data = await readFilePromise('example.txt', 'utf8');
        console.log(data);
      } catch (err) {
        console.error(err);
      }
    }
    
    readFile();

    这样,传统的回调函数就变成了 Promise 风格,使得异步操作的错误处理和代码的可读性都得到了改善。

判断是否为指定类型的内置对象

util.isType() 方法用于判断一个对象是否为指定类型的内置对象。常用的判断方法包括 util.isArray(), util.isDate(), util.isRegExp() 等。

  • 用法:

    javascript
    const util = require('util');
    
    console.log(util.isArray([]));  // 输出:true
    console.log(util.isDate(new Date()));  // 输出:true
    console.log(util.isRegExp(/abc/));  // 输出:true
    console.log(util.isError(new Error('Something went wrong')));  // 输出:true

    以下是 util 模块中常见的类型检查方法:

    • util.isArray()
    • util.isDate()
    • util.isError()
    • util.isFunction()
    • util.isRegExp()
    • util.isObject() 等。
编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!