Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js util.inherits vs new_Node.js - Fatal编程技术网

node.js util.inherits vs new

node.js util.inherits vs new,node.js,Node.js,我们可以看到: var util = require("util"); var events = require("events"); function MyStream() { events.EventEmitter.call(this); } util.inherits(MyStream, events.EventEmitter); var stream = new MyStream(); 是否与以下内容相同: function MyStream2() { } //MyStr

我们可以看到:

var util = require("util");
var events = require("events");

function MyStream() {
    events.EventEmitter.call(this);
}

util.inherits(MyStream, events.EventEmitter);

var stream = new MyStream();
是否与以下内容相同:

function MyStream2() {
}
//MyStream2 = new events.EventEmitter; WRONG. Thank you @Esailija
MyStream2.prototype = new events.EventEmitter;

var stream2 = new MyStream2();

谢谢:)

如果我们编辑您的代码以使其正常工作,即:

MyStream2.prototype = new events.EventEmitter;
仍然会有一些差异:

  • 在您的版本中,
    MyStream2.prototype.constructor==events.EventEmitter
    ,带有
    继承
    MyStream2.prototype.constructor==MyStream2

  • 您的版本会调用可能有副作用的
    事件.EventEmitter
    构造函数,而
    继承的
    使用的
    对象.create
    不调用构造函数

  • 与链接原型之间的差异无关,但在调用子构造函数时,您的版本不会调用父构造函数。因此,它应该仍然具有
    函数MyStream2(){events.EventEmitter.call(this);}
    ,以便在调用子构造函数时正确地建立初始状态


非常感谢您的解释。我会了解他们的。