См. Пример ниже. Я пытаюсь вызвать событие на a
.Добавление прослушивателя событий на экземпляр, а не на функцию
var events = require("events");
function foo() {
this.on("ping", function() {
console.log("bar!");
})
}
foo.prototype = new events.EventEmitter();
var a = new foo();
var b = new foo();
a.emit("ping");
Это печатает "бар!" два раза, поэтому я предполагаю, что я добавляю слушателя событий на «все» функции, а не конкретный экземпляр. Поскольку я бегу foo два раза, я добавляю двух слушателей событий, ничего странного, хотя это не так интуитивно.
Есть ли способ добавить слушателя событий только на a
?
(Пожалуйста, измените этот вопрос, если я использую неправильную терминологию, используемую для программирования на основе классов)
редактировать: Так что я подозреваю, что это потому, что я использую тот же излучатель событий как прототип .. Но в этом случае, как я могу создать один для каждого нового foo()?
Возможно, это [статья об EventEmitter] (http://blog.ashworth.in/how-to-use-the-node-js-eventemitter/) поможет вам? –