gpt4 book ai didi

node.js - events/EventEmitter在nodejs构造函数中做什么

转载 作者:太空宇宙 更新时间:2023-11-04 01:01:52 26 4
gpt4 key购买 nike

我正在学习node.js。在nodejs api网站上有一段我不太明白的代码。链接为here

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

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

util.inherits(MyStream, events.EventEmitter);

MyStream.prototype.write = function(data) {
this.emit("data", data);
}

var stream = new MyStream();

console.log(stream instanceof events.EventEmitter); // true
console.log(MyStream.super_ === events.EventEmitter); // true

stream.on("data", function(data) {
console.log('Received data: "' + data + '"');
})
stream.write("It works!"); // Received data: "It works!"

所以令人困惑的部分是

events.EventEmitter.call(this);

它在这里做什么?

最佳答案

MyStream 是一个新的对象声明,它继承了 events.EventEmitter 的行为,从配置继承的这一行可以看出:

util.inherits(MyStream, events.EventEmitter);

因此,当通常通过诸如 var stream = new MyStream(); 之类的方式调用 MyStream 构造函数时,它还需要调用它继承的对象的构造函数,以便父对象可以正确初始化自身。这就是这一行:

events.EventEmitter.call(this);

events.EventEmitterMyStream 继承的对象的构造函数。 events.EventEmitter.call(this) 指示 Javascript 调用该构造函数,并将 this 指针设置为 this 对象。

如果您需要更多帮助来理解 .call(),您可以阅读 this MDN reference .

关于node.js - events/EventEmitter在nodejs构造函数中做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26309063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com