gpt4 book ai didi

javascript - 作为事件发射器的构造函数

转载 作者:行者123 更新时间:2023-11-28 20:47:04 25 4
gpt4 key购买 nike

我想为我在node.js 中所做的一些工作编写一个构造函数。除此之外,我想记录它使用事件发射器创建的实例数量。目前,我通过为构造函数对象提供一个事件发射器方法来实现此目的。例如:

var EventEmitter = require('events').EventEmitter;

function MyObject() {
...
MyObject.events.emit('createdMyObject')
}

MyObject.events = new EventEmitter();

/* somewhere else... */

MyObject.events.on('createdMyObject', function () {
// Do something when a new instance is created.
});

我真正喜欢的是构造函数更直接地发出事件,这样我就可以用类似的方法来监听它们:

MyObject.on('createdMyObject', function () {
// Do something when a new instance is created.
});

有办法做到这一点吗?

请注意,我不需要实例成为事件发射器(当你用谷歌搜索时,有很多这样的例子)。我想要一些与其他 OO 语言中的类方法等效的东西。

最佳答案

您不能将 events.on 别名为 on 吗? :

// Note: can't use simple function assignment because we need
// the "this" inside on to point to events instead of MyObject

MyObject.on = function (eventType,callback) {
MyObject.events.on(eventType,callback);
}

它并没有摆脱 MyObjects.events,只是提供了一种添加事件处理程序的替代方法。

<小时/>

附加答案

如果您确实希望您的对象成为事件发射器,也许您想要的是从 EventEmitter 对象继承?如果是这样,只需进行常规继承即可:

function MyObject() {
/*
* MyObject specific stuff here
*/

this.emit('createdMyObject');
}

// Now we inherit from an EventEmitter object:
MyObject.prototype = Object.create(EventEmitter.prototype);

关于javascript - 作为事件发射器的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13264937/

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