Node.js的原型继承函数 util.inherits
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相关推荐
- Node.js中的常用工具类util
util是一个Node.js核心模块,提供常用函数的集合,用于弥补JavaScript的功能的不足,util模块设计的主要目的是为了满足Node内部API的需求.其中包括:格式化字符串.对象的序列化. ...
- Node.js: 如何继承 events 自定义事件及触发函数
events 是node.js的核心api ,几乎大部分node.js 的api都继承 events 类(javascript中没有类,也不存在继承,确切说是模拟类和继承,点击查看) 比如我们常见的 ...
- java中的inherits_node.js 下使用 util.inherits 来实现继承
上一篇博客说到了node.js继承events类实现事件发射和事件绑定函数,其中我们实现了一个公用基类 _base ,然后在模型中差异化的定义了各种业务需要的模型并继承 _base 公共基类.但是其中 ...
- (7)Node.js 全局函数
一.Node.js 下的全局函数 1.1JavaScript 语言提供的全局函数,在 Node.js 下依然可用 • parseInt/parseFloat/isNaN/isFinite/eval.. ...
- Node.js:常用工具、路由
一.常用工具util util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. 1.util.inherits util.inherit ...
- node.js学习笔记5——核心模块1
node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...
- 【全文】狼叔:如何正确的学习Node.js
说明 2017-12-14 我发了一篇文章<没用过Node.js,就别瞎逼逼>是因为有人在知乎上黑Node.js.那篇文章的反响还是相当不错的,甚至连著名的hax贺老都很认同,下班时读那篇 ...
- 狼叔:如何正确的学习Node.js
1. [知乎Live]狼叔:如何正确的学习Node.js 预览地址 i5ting.github.io/How-to-lear- Live 简介 你好,我是 i5ting ,江湖人称「狼叔」,目前是阿里 ...
- 深入浅出Node.js(上)
(一):什么是Node.js Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟 ...
最新文章
- 推荐一款神器:在浏览器中运行 vscode,随时随地写代码
- 关于Uncaught SyntaxError: Unexpected identifier
- micropython中文社区 socket通讯_基于MicroPython结合ESP8266模块实现TCP通信(AT指令版)...
- SIFT算法中概念简单解释
- linux 运行unix elf,在Linux中ELF可执行问题
- OpenSIPS替代VOS3000的方案
- Redis的管道pipeline
- 首个教育部印发的人工智能行动计划出炉:规划三步走,大学有三任务
- win10电脑一开机提示拒绝访问怎么办
- 1-初识C语言-C语言学习笔记来自比特鹏哥的资料
- python猴子偷桃_【Python】每日一练:猴子偷桃
- 笔记本电脑上网出现问题的解决方法
- 计算机如何与机顶盒连接网络连接网络连接,如何将机顶盒连接到计算机
- iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
- 计算机网络练习题(应用层)
- 华为9306配置备忘(以太网)
- DENSE_RANK() 函数的使用
- QPushButton实现图片在上文本在下
- Android 判断App运行在模拟器还是真机上的最终解决方案
- DVD摄像机使用小技巧