util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足。


util.inherits

util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。

JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有 提供对象继承的语言级别特性,而是通过原型复制来实现的。

在这里我们只介绍util.inherits 的用法,示例如下:

  1. varutil = require('util');
  2. functionBase() {
  3. this.name = 'base';
  4. this.base = 1991;
  5. this.sayHello = function() {
  6. console.log('Hello ' + this.name);
  7. };
  8. }
  9. Base.prototype.showName = function() {
  10. console.log(this.name);
  11. };
  12. functionSub() {
  13. this.name = 'sub';
  14. }
  15. util.inherits(Sub, Base);
  16. varobjBase = newBase();
  17. objBase.showName();
  18. objBase.sayHello();
  19. console.log(objBase);
  20. varobjSub = newSub();
  21. objSub.showName();
  22. //objSub.sayHello();
  23. console.log(objSub);

我们定义了一个基础对象Base 和一个继承自Base 的Sub,Base 有三个在构造函数 内定义的属性和一个原型中定义的函数,通过util.inherits 实现继承。运行结果如下:

  1. base
  2. Hello base
  3. { name: 'base', base: 1991, sayHello: [Function] }
  4. sub
  5. { name: 'sub' }

注意:Sub 仅仅继承了Base 在原型中定义的函数,而构造函数内部创造的 base 属 性和 sayHello 函数都没有被 Sub 继承。

同时,在原型中定义的属性不会被console.log 作 为对象的属性输出。如果我们去掉 objSub.sayHello(); 这行的注释,将会看到:

  1. node.js:201
  2. throw e; // process.nextTick error, or 'error' event on first tick
  3. ^
  4. TypeError: Object #<Sub> has no method 'sayHello'
  5. at Object.<anonymous> (/home/byvoid/utilinherits.js:29:8)
  6. at Module._compile (module.js:441:26)
  7. at Object..js (module.js:459:10)
  8. at Module.load (module.js:348:31)
  9. at Function._load (module.js:308:12)
  10. at Array.0 (module.js:479:10)
  11. at EventEmitter._tickCallback (node.js:192:40)

util.inspect

util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出。它至少接受一个参数 object,即要转换的对象。

showHidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。

depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多 少。如果不指定depth,默认会递归2层,指定为 null 表示将不限递归层数完整遍历对象。 如果color 值为 true,输出格式将会以ANSI 颜色编码,通常用于在终端显示更漂亮 的效果。

特别要指出的是,util.inspect 并不会简单地直接把对象转换为字符串,即使该对 象定义了toString 方法也不会调用。

  1. varutil = require('util');
  2. functionPerson() {
  3. this.name = 'byvoid';
  4. this.toString = function() {
  5. return this.name;
  6. };
  7. }
  8. varobj = newPerson();
  9. console.log(util.inspect(obj));
  10. console.log(util.inspect(obj, true));

运行结果是:

  1. { name: 'byvoid', toString: [Function] }
  2. { toString:
  3. { [Function]
  4. [prototype]: { [constructor]: [Circular] },
  5. [caller]: null,
  6. [length]: 0,
  7. [name]: '',
  8. [arguments]: null },
  9. name: 'byvoid' }

util.isArray(object)

如果给定的参数 "object" 是一个数组返回true,否则返回false。

  1. var util = require('util');
  2.  
  3. util.isArray([])
  4. // true
  5. util.isArray(new Array)
  6. // true
  7. util.isArray({})
  8. // false

util.isRegExp(object)

如果给定的参数 "object" 是一个正则表达式返回true,否则返回false。

  1. var util = require('util');
  2.  
  3. util.isRegExp(/some regexp/)
  4. // true
  5. util.isRegExp(new RegExp('another regexp'))
  6. // true
  7. util.isRegExp({})
  8. // false

util.isDate(object)

如果给定的参数 "object" 是一个日期返回true,否则返回false。

  1. var util = require('util');
  2.  
  3. util.isDate(new Date())
  4. // true
  5. util.isDate(Date())
  6. // false (without 'new' returns a String)
  7. util.isDate({})
  8. // false

util.isError(object)

如果给定的参数 "object" 是一个错误对象返回true,否则返回false。

  1. var util = require('util');
  2.  
  3. util.isError(new Error())
  4. // true
  5. util.isError(new TypeError())
  6. // true
  7. util.isError({ name: 'Error', message: 'an error occurred' })
  8. // false

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

  1. Node.js 常用工具util包

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.isError(obj); util.is ...

  2. Node.js 常用工具util

    util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherits(constructor ...

  3. 31.Node.js 常用工具 util

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaS ...

  4. Node.js 常用工具

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ...

  5. Node.js 常用工具 (util.inherits)

    util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherits(constructor ...

  6. Node.js:常用工具util

    概要:本篇博客的主要内容是介绍node.js的常用工具util. 1.util.inherits util.inherits(constructor,superConstructor)是一个实现对象间 ...

  7. node.js 下使用 util.inherits 来实现继承

    上一篇博客说到了node.js继承events类实现事件发射和事件绑定函数,其中我们实现了一个公用基类 _base ,然后在模型中差异化的定义了各种业务需要的模型并继承 _base 公共基类.但是其中 ...

  8. 我用的一些Node.js开发工具、开发包、框架等总结

    开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 2.做些小型项目用Sublime Text. 3.Browser ...

  9. Node.js开发工具、开发包、框架等总结

    开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢.2.做些小型项目用Sublime Text.3.Browserif ...

随机推荐

  1. 你不要用战术上的勤奋掩盖战略上的懒惰by雷军

    这个问题很有趣. 战略.战术.勤奋.懒惰,我们拆开来看吧,虽然我觉得其实分析一个人说话是为什么是很没有意义的事情.我们要先了解一下,公司的组织中,谁是指定战略的,谁是指定战术的.公司战略和战术意味着什 ...

  2. OAuth2.0概述

    OAuth2.0较1.0相比,整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式. 关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resour ...

  3. ql Server 高频,高并发访问中的键查找死锁解析

    死锁对于DBA或是数据库开发人员而言并不陌生,它的引发多种多样,一般而言,数据库应用的开发者在设计时都会有一定的考量进而尽量避免死锁的产生.但有时因为一些特殊应用场景如高频查询,高并发查询下由于数据库 ...

  4. C#委托,事件最初浅的和最易看懂的学习笔记

    对于委托和事件,看了不少博文,当时好像都理解了,过了一段时间,又忘记的差不多了.每每如此,感觉自己很笨,记性差,其实是没有深入理解透切,没有按照自己的语言表达出来,当然容易忘记.今天又花了一些时间,好 ...

  5. Account Team使用说明

    Account  Team Account Team 以下简称客户小组. 背景介绍 帐户是与您的业务相关的公司和组织,每个帐户都存储了商家名称.地址和电话号码等信息.可以针对每个帐户存储相关的联系人. ...

  6. TTL

    TTL(Time To Live )是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃.有很多原因使包在一定时间内不能被传递到目的地.解决方法就是在一段时 间后丢弃这个包,然后 ...

  7. HDU 5688:2016"百度之星" - 资格赛 Problem D

    原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others)    ...

  8. mysql删除带有NULL的行

    假如表A有一列,名字为“Age”,有些行对应的Age为NULL,如果要删除这些行,使用一下语句: delete from A where Age is null;

  9. .Net最佳实践3:使用性能计数器收集性能数据

    本文值得阅读吗? 本文讨论我们如何使用性能计数器从应用程序收集数据.我们将先了解的基本知识,然后我们将看到一个简单的示例,我们将从中收集一些性能数据. 介绍: - 我的应用程序的性能是最好的,像火箭 ...

  10. Hadoop笔记HDFS(2)

    高级Hadoop MapReduce管理 1 调试部署好的Hadoop的配置 2 运行基准测试检验Hadoop的安装 3 重新利用JVM提升性能 4 容错性 5 调试脚本-分析失败任务原因 6 设置失 ...