util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有 提供对象继承的语言级别特性,而是通过原型复制来实现的,具体细节我们在附录A中讨论, 在这里我们只介绍 util.inherits 的用法,示例如下:

var util = require('util');
function Base() {this.name = 'base';this.base = 1991;this.sayHello = function() {console.log('Hello ' + this.name);};
}
Base.prototype.showName = function() {console.log(this.name);
};
function Sub() {this.name = 'sub';
}
util.inherits(Sub, Base);
var objBase = new Base();
objBase.showName();
objBase.sayHello();
console.log(objBase);
var objSub = new Sub();
objSub.showName();
//objSub.sayHello();
console.log(objSub);

代码laycode - v1.1

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

base
Hello base
{ name: 'base', base: 1991, sayHello: [Function] }
sub
{ name: 'sub' }

注意,Sub 仅仅继承了 Base 在原型中定义的函数,而构造函数内部创造的 base 属 性和 sayHello 函数都没有被 Sub 继承。同时,在原型中定义的属性不会被 console.log 作 为对象的属性输出。如果我们去掉 objSub.sayHello(); 这行的注释,将会看到:

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object # has no method 'sayHello'
at Object.

(/home/byvoid/utilinherits.js:29:8) at Module._compile (module.js:441:26) at Object..js (module.js:459:10) at Module.load (module.js:348:31) at Function._load (module.js:308:12) at Array.0 (module.js:479:10) at EventEmitter._tickCallback (node.js:192:40)

转载于:https://www.cnblogs.com/douglasvegas/p/4891284.html

Node.js的原型继承函数 util.inherits相关推荐

  1. Node.js中的常用工具类util

    util是一个Node.js核心模块,提供常用函数的集合,用于弥补JavaScript的功能的不足,util模块设计的主要目的是为了满足Node内部API的需求.其中包括:格式化字符串.对象的序列化. ...

  2. Node.js: 如何继承 events 自定义事件及触发函数

    events 是node.js的核心api ,几乎大部分node.js 的api都继承 events 类(javascript中没有类,也不存在继承,确切说是模拟类和继承,点击查看) 比如我们常见的 ...

  3. java中的inherits_node.js 下使用 util.inherits 来实现继承

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

  4. (7)Node.js 全局函数

    一.Node.js 下的全局函数 1.1JavaScript 语言提供的全局函数,在 Node.js 下依然可用 • parseInt/parseFloat/isNaN/isFinite/eval.. ...

  5. Node.js:常用工具、路由

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

  6. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  7. 【全文】狼叔:如何正确的学习Node.js

    说明 2017-12-14 我发了一篇文章<没用过Node.js,就别瞎逼逼>是因为有人在知乎上黑Node.js.那篇文章的反响还是相当不错的,甚至连著名的hax贺老都很认同,下班时读那篇 ...

  8. 狼叔:如何正确的学习Node.js

    1. [知乎Live]狼叔:如何正确的学习Node.js 预览地址 i5ting.github.io/How-to-lear- Live 简介 你好,我是 i5ting ,江湖人称「狼叔」,目前是阿里 ...

  9. 深入浅出Node.js(上)

    (一):什么是Node.js Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟 ...

最新文章

  1. 推荐一款神器:在浏览器中运行 vscode,随时随地写代码
  2. 关于Uncaught SyntaxError: Unexpected identifier
  3. micropython中文社区 socket通讯_基于MicroPython结合ESP8266模块实现TCP通信(AT指令版)...
  4. SIFT算法中概念简单解释
  5. linux 运行unix elf,在Linux中ELF可执行问题
  6. OpenSIPS替代VOS3000的方案
  7. Redis的管道pipeline
  8. 首个教育部印发的人工智能行动计划出炉:规划三步走,大学有三任务
  9. win10电脑一开机提示拒绝访问怎么办
  10. 1-初识C语言-C语言学习笔记来自比特鹏哥的资料
  11. python猴子偷桃_【Python】每日一练:猴子偷桃
  12. 笔记本电脑上网出现问题的解决方法
  13. 计算机如何与机顶盒连接网络连接网络连接,如何将机顶盒连接到计算机
  14. iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
  15. 计算机网络练习题(应用层)
  16. 华为9306配置备忘(以太网)
  17. DENSE_RANK() 函数的使用
  18. QPushButton实现图片在上文本在下
  19. Android 判断App运行在模拟器还是真机上的最终解决方案
  20. DVD摄像机使用小技巧

热门文章

  1. fftw java_如何在iOS上编译fftw3
  2. 交互媒体设计之交互喷泉
  3. Android高仿京东、天猫下拉刷新
  4. 人终会被年少不可得之物困扰一生,也终会因一事一景解开其一生困惑。
  5. c语言kdm算法,基于椭圆曲线的KDM安全公钥加密方案
  6. 我的年终总结---致逝去的2018
  7. windows runas 用一行命令输入密码
  8. 测试号下,微信配置提示‘配置失败’
  9. python数字水印 (图片和PDF文档)
  10. 微信支付宝积极推广刷脸支付行业会快速跟进