为什么在Node.js中使用util.inherits和.call来inheritance
我想知道为什么,当在节点中创build一个新的stream
类时,我需要同时使用call
和util.inherits
例如,在以下用于创build可读stream的代码中,我必须使用以下两个:
var Readable = require('stream').Readable; var util = require('util'); var MyStream = function (options) { Readable.call(this, options) } util.inherits(MyStream, Readable); //Hasn't this already inherited all methods from Readable via "call" var stream = new MyStream();
这似乎是Readable.call
从Readable
调用构造函数,因此util.inherits
是不必要的。
util.inherits
会将Readable
的原型合并到MyStream
。 这个原型合并和构造函数调用都需要更完整的inheritance。
构造函数调用Readable.call( ... )
将只是通过Readable
的构造函数运行,可能初始化一些variables,也许做一些初始设置。
原型合并util.inherits(MyStream, Readable);
将采用Readable
的原型方法,并将其粘贴到任何未来的MyStream
实例上。
所以没有构造函数调用,你不会得到最初的设置,没有原型合并,你没有得到的方法。 从中你可以看到为什么这两个步骤都需要。
- 这是一个很好的方式来做Javascriptinheritance?
- Node.js,embedded式对象的Mongoose策略模式(inheritance,鉴别器)
- 如何扩展Javascriptdate对象?
- 为什么nodejs不能inheritance浏览器js
- 如何从基于对象的语言转移到服务器端Node.js JavaScript的大项目?
- 检查nodejs中的inheritance
- Node.js奇怪的原型inheritance
- Object.create(BaseObject)和util.inherits(MyObject,BaseObject)有什么区别?
- Coffeescript:dynamic创build一个方法被调用的类的实例