这个问题与JavaScript有关,但我认为它适用于任何语言。
我是OOP的新手,我只是想看看是否有最佳实践/更好的方法。我有一个对象需要订阅一些事件。我将事件订阅放在对象构造函数中,如下所示:
function Obj() {
//instance variables
outsideEvent.addHandler(function(response) {
//do stuff
});
}
问题是现在我觉得这个对象与发布者有关;我想如果我可以以某种方式订阅对象本身之外。不幸的是,我不知道何时或何地可以初始化此对象的新实例。我想过制作一个“attachEvents”成员函数,但是只要在构造函数中创建或调用新实例就必须调用该函数,但这可能是最佳实践吗?它至少可以使单元测试变得更容易。
我只是在寻找一些建议;什么都赞赏!
答案 0 :(得分:2)
function Constructor(eventEmitter) {
/* code */
this.listenTo(eventEmitter);
}
Constructor.prototype.listenTo = listenTo;
function listenTo(eventEmitter) {
/* bind events */
}
或者更确切地说,然后将eventEmitter传递给构造函数,构造函数可以从eventemitter继承并且本身就是一个。
这意味着它可以自己听。然后,您将在其上发布事件,而不是一些外部eventEmitter。