Я хотел бы создать персонализированный эмитент событий в своих клиентских программах. Я ссылаюсь на эту (разреженную) документацию для EventTarget
Моя попытка реализации
var Emitter = function Emitter() {
EventTarget.call(this);
};
Emitter.prototype = Object.create(EventTarget.prototype, {
constructor: {
value: Emitter
}
});
Желаемое использование
var e = new Emitter();
e.addEventListener("hello", function() {
console.log("hello there!");
});
e.dispatchEvent(new Event("hello"));
// "hello there!"
Где он терпит неудачу
var e = new Emitter();
// TypeError: Illegal constructor
Что я делаю неправильно?
Обновление
Возможно следующее, но это хак, который зависит от фиктивного DOMElement
var fake = document.createElement("phony");
fake.addEventListener("hello", function() { console.log("hello there!"); });
fake.dispatchEvent(new Event("hello"));
// "hello there!"
Я хотел бы знать, как это сделать, не используя фиктивный элемент