转自:http://www.runoob.com/nodejs/nodejs-module-system.html

util是一个Node.js核心模块,提供常用函数的集合,用于弥补JavaScript的功能的不足,util模块设计的主要目的是为了满足Node内部API的需求。其中包括:格式化字符串、对象的序列化、实现对象继承等常用方法。要使用util模块中的方法,只需require('util')引入即可。

  1. 格式化输出字符串:util.format(format[, ...])
  2. 在控制台标准输出:util.log(string)
  3. 将对象序列化为字符串:util.inspect(object[, options])
  4. 检查对象是否是数组:util.isArray(object)
  5. 检查对象是否是RegExp类型:util.isRegExp(object)
  6. 检查对象是否是Date类型:util.isDate(object)
  7. 检查对象是否是Error类型:util.isError(object)
  8. 实现对象间原型继承:util.inherits(constructor, superConstructor)

1. 格式化输出字符串:util.format(format[, ...])

根据第一个参数,返回一个格式化字符串,类似printf的格式化输出。 传入的第一个参数是一个字符串,其中包含零个或多个占位符,format方法会将其中的每一个占位符被替换为与其对应的值后,输出结果。 format方法支持的占位符有:

  • %s - 字符串.
  • %d - 数字 (整型和浮点型).
  • %j - JSON. 如果这个参数包含循环对象的引用,将会被替换成字符串 '[Circular]'
  • %% - 单独一个百分号('%')。不会占用一个参数。

format方法的几种使用示例:

console.log(util.format('%s:%s', 'foo')); 	// foo:%s
console.log(util.format('%s:%s:%d', 'foo', 'bar', 'baz')); // foo:bar:NaN
console.log(util.format(1, 2, 3)); // 1 2 3

2. 在控制台标准输出:util.log(string)

printf方法用于在控制台stdout输出,输出带有时间戳。

util.log('这是一个stout输出');			//15 Jun 18:28:20 - 这是一个stout输出

3. 将对象序列化为字符串:util.inspect(object[, options])

inspect方法用于将对象序列化为字符串,这一方法在调试代码查看对象结构时非常有用。其可选参数可选值如下:

  • showHidden - 是否枚举显示对象的隐藏属性。默认为 false

  • depth - 设置对象枚举显示的深度。默认为2,设置为null时将无穷递归显示
  • colors - 如果设为true,将会以ANSI颜色代码风格进行输出。默认为 false
  • customInspect - 如果设为 false,那么定义在被检查对象上的inspect(depth, opts) 方法将不会被调用。 默认为true

例如检查util对象的所有属性。代码如下:

var util = require('util');

console.log(util.inspect(util, { showHidden: true, depth: null }));

3.1 自定义 util.inspect 颜色

util.inspect属性用于自定义输出的颜色和样式,可以通过util.inspect.styles 和util.inspect.colors 属性设置。

util.inspect.colors可定义的颜色有:whitegreyblackbluecyangreenmagentared 和 yellow

util.inspect.styles可定义的样式有:bolditalicunderline 和 inverse

3.2 自定义对象的 inspect() 方法

对象可以定义自己的 inspect(depth)方法;当使用util.inspect()检查该对象的时,自定义的inspect(depth)方法将会被执行。使用示例如下:

var util = require('util');

var obj = { name: 'nate' };
obj.inspect = function(depth) {
return '{' + this.name + '}';
}; util.inspect(obj);
// "{nate}"

4. 检查对象是否是数组:util.isArray(object)

isArray()方法用于检查传入对象是否是数据,isArray()方法会首先使用ECMAScript5中的Array.isArray()方法和typeof操作符等进行检查,以确保检查结果的正确性。几种使用示例如下:

var util = require('util');

util.isArray([])
// true
util.isArray(new Array)
// true
util.isArray({})
// false

5. 检查对象是否是RegExp类型:util.isRegExp(object)

isRegExp方法用于检查对象是否是RegExp类型,即是否为正则表达式对象。几种使用示例如下:

var util = require('util');

util.isRegExp(/some regexp/)
// true
util.isRegExp(new RegExp('another regexp'))
// true
util.isRegExp({})
// false

6. 检查对象是否是Date类型:util.isDate(object)

isDate方法用于检查对象是否是RegExp类型,即日期类型。几种使用示例如下:

var util = require('util');

util.isDate(new Date())
// true
util.isDate(Date())
// false (without 'new' returns a String)
util.isDate({})
// false

7. 检查对象是否是Error类型: util.isError(object)

isError方法用于检查对象是否是Error类型。几种使用示例如下:

var util = require('util');

util.isError(new Error())
// true
util.isError(new TypeError())
// true
util.isError({ name: 'Error', message: 'an error occurred' })
// false

8. 实现对象间原型继承:util.inherits(constructor, superConstructor)

util.inherits(constructor, superConstructor)是一个实现对象间原型继承的方法。JavaScript 的面向对象特性是基于原型的继承,与常见的基于类的不同,JavaScript 没有提供对象继承的语言级别特性,而是通过原型链复制来实现的。inherits方法可以将父类原型链上的方法复制到子类中,实现原型式继承。

使用示例,实现一型式继承:

var util = require("util");
var events = require("events"); //MyStream构造函数,在构造函数将this指向本对象
function MyStream() {
events.EventEmitter.call(this);
} //复制父对象上所有的方法
util.inherits(MyStream, events.EventEmitter); //对MyStream类添加原型方法
MyStream.prototype.write = function(data) {
this.emit("data", data);
} var stream = new MyStream(); //由于MyStream继承自EventEmitter,所以其实例stream是MyStream类的实例也是EventEmitter类的实例
console.log(stream instanceof events.EventEmitter); // true
console.log(MyStream.super_ === events.EventEmitter); // true //父类中的方法调用
stream.on("data", function(data) {
console.log('Received data: "' + data + '"');
})
//子类中的方法调用
stream.write("It works!"); // Received data: "It works!"

util模块中还有一些方法如:util.debug(string)util.puts([...])util.pump(readableStream, writableStream, [callback])等,但都不是稳定版本或已被其它方法替代,不再赘述。

32.Node.js中的常用工具类util的更多相关文章

  1. commons-lang3-3.2.jar中的常用工具类的使用

    这个包中的很多工具类可以简化我们的操作,在这里简单的研究其中的几个工具类的使用. 1.StringUtils工具类 可以判断是否是空串,是否为null,默认值设置等操作: /** * StringUt ...

  2. 【spring】spirng中的常用工具类

    一.概述 很多时候,很多工具类其实spring中就已经提供,常用的工具类有: 参考:https://www.cnblogs.com/langtianya/p/3875103.html 内置的resou ...

  3. 自己项目中PHP常用工具类大全分享

    <?php /** * 助手类 * @author www.shouce.ren * */ class Helper { /** * 判断当前服务器系统 * @return string */ ...

  4. Node.js中npm常用命令大全

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm ...

  5. javascript常用工具类util.js

    //如果大家想要补充,请留言 /** * 判断指定名称的复选框是否被选中 * * @param {} * chname复选框名称 */ function chkCheckCha(chname) { v ...

  6. 【Java基础】Java开发过程中的常用工具类库

    目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...

  7. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  8. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  9. vue项目工具文件utils.js javascript常用工具类,javascript常用工具类,util.js

    vue项目工具文件utils.js :https://blog.csdn.net/Ajaxguan/article/details/79924249 javascript常用工具类,util.js : ...

随机推荐

  1. java中string与json互相转化

    在Java中socket数据传输时,数据类型往往比較难选择.可能要考虑带宽.跨语言.版本号的兼容等问题. 比較常见的做法有两种:一是把对象包装成JSON字符串传输,二是採用java对象的序列化和反序列 ...

  2. IIS 无法读取配置节&quot;system.web.extensions&quot;,由于它缺少节声明

    作者:jiankunking 出处:http://blog.csdn.net/jiankunking 今天在本地安装iis.搭建站点,应用程序的时候报错以下的错误: server错误 Internet ...

  3. 洛谷P3355 骑士共存问题

    题目描述 在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置 ...

  4. 如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

    前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态——附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣 ...

  5. JSP页面的静态包含和动态包含的区别与联系

    JSP中有两种包含: 静态包含:<%@include file="被包含页面"%> 动态包含:<jsp:include page="被包含页面" ...

  6. 干货分享 -- Math

    昼猫笔记 JavaScript -- Math Math也是JS的内置对象,但是它不是一个构造函数,它属于一个工具类不用创建对象,它封装了数学运算相关的属性和方法,今天就来写下常用的函数[API(ap ...

  7. jquery点击弹框外层关闭弹框

    $(document).bind("click",function(e){            if($( e.target ).closest(".game-cont ...

  8. WP8 学习笔记(002_应用程序结构)

    下图是微软官方给出的WP8应用程序执行顺序: 在App.XAML.CS中,有程序主要步骤的函数 // 应用程序启动(例如,从“开始”菜单启动)时执行的代码 // 此代码在重新激活应用程序时不执行 pr ...

  9. Java的位运算符——&0xFF的运算与讲解

    快放元旦假,没心思做啥的事,就去翻以前的代码遇到这句,但是又不懂,所以只好上网找,终于懂了那么一点点. 所以那个大神看到我说的有问题,请指出!谢谢.... 一:首先区分一下 A~F的意思先 A,代表十 ...

  10. Maintaining processor resources during architectural events

    In one embodiment of the present invention, a method includes switching between a first address spac ...