Javascript 为什么在Node.js中使用util.inherits和.call进行继承
我想知道为什么在节点中创建新的流类时,我需要同时使用call和util.inherits 例如,在以下用于创建可读流的代码中,我必须同时使用这两种代码:Javascript 为什么在Node.js中使用util.inherits和.call进行继承,javascript,node.js,inheritance,Javascript,Node.js,Inheritance,我想知道为什么在节点中创建新的流类时,我需要同时使用call和util.inherits 例如,在以下用于创建可读流的代码中,我必须同时使用这两种代码: var Readable = require('stream').Readable; var util = require('util'); var MyStream = function (options) { Readable.call(this, options) } util.inherits(MyStream, Read
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中。为了获得更完整的继承感,这个原型合并和构造函数调用都是必需的
构造函数调用Readable.call。。。将只运行可读的构造函数,可能会初始化一些变量,可能会进行一些初始设置
原型merge util.inheritsMyStream,可读;将在Readable上使用原型方法,并将其粘贴到MyStream的任何未来实例上
因此,如果没有构造函数调用,就无法获得初始设置,如果没有原型合并,就无法获得方法。从中可以看出为什么需要同时执行这两个步骤