node.js利用 inherits实现继承
2015-03-21 16:26
756 查看
util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有 提供对象继承的语言级别特性,而是通过原型复制来实现的,具体细节我们在附录A中讨论, 在这里我们只介绍 util.inherits 的用法,示例如下:
代码laycode
- v1.1
我们定义了一个基础对象 Base 和一个继承自 Base 的 Sub,Base 有三个在构造函数 内定义的属性和一个原型中定义的函数,通过 util.inherits 实现继承。运行结果如下:
代码laycode
- v1.1
注意,Sub 仅仅继承了 Base 在原型中定义的函数,而构造函数内部创造的 base 属 性和 sayHello 函数都没有被 Sub 继承。同时,在原型中定义的属性不会被 console.log 作 为对象的属性输出。如果我们去掉 objSub.sayHello(); 这行的注释,将会看到:
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' } 1 2 3 4 5 6
代码laycode
- v1.1
注意,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)
相关文章推荐
- node.js利用javascript中构造函数继承,实现模块调用
- node.js面向对象实现(二)继承
- [转]Browserify —— 利用Node.js实现JS模块化加载
- Node.js利用Net模块实现多人命令行聊天室的方法
- 利用forever在Linux上实现Node.js项目自启动
- node.js面向对象实现(二)继承
- 如何利用Kubernetes编排实现Node.js程序的微服务化
- node.js面向对象实现(二)继承
- node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
- 利用Node.js实现模拟Session验证的登陆
- node.js WebService异常处理(domain)以及利用domain实现request生命周期的全局变量
- node.js利用express实现文件上传
- 利用Node.js+Koa框架实现前后端交互的方法
- 利用Web Socket技术实现client端与server端的连接(以Node.js作为服务器端)
- 利用Node.js实现模拟Session验证的登陆
- Browserify —— 利用Node.js实现JS模块化加载
- Node.JS 利用socket.io 实现dj播放及聊天程序 代码
- node.js利用captchapng模块实现图片验证码
- 利用Node.JS实现邮件发送功能
- 利用Node.js的Net模块实现一个命令行多人聊天室