Как установить EventTarget события.Как установить EventTarget события
var myObj = {foo: 'bar'};
var event = new Event('eventName');
event.target = myObj;
приведет к следующей ошибке:
Uncaught TypeError: Cannot set property target of #<Event> which has only a getter
Edit:
Я хочу написать что-то вроде этого, где мой класс будет target
:
class MyClass {
constructor() {
this.listeners = {};
}
addEventListener(type, callback) {
if (!(type in this.listeners)) {
this.listeners[type] = [];
}
this.listeners[type].push(callback);
}
removeEventListener() {
if (!(type in this.listeners)) {
return;
}
var stack = this.listeners[type];
for (var i = 0, l = stack.length; i < l; i++) {
if (stack[i] === callback) {
stack.splice(i, 1);
return this.removeEventListener(type, callback);
}
}
}
dispatchEvent(event) {
if (!(event.type in this.listeners)) {
return;
}
var stack = this.listeners[event.type];
event.target = this;
for (var i = 0, l = stack.length; i < l; i++) {
stack[i].call(this, event);
}
}
}
let myInstance = new MyClass();
let event = new Event('eventName');
myInstance.dispatchEvent();
Дополнительная информация: https://developer.mozilla.org/en/docs/Web/API/EventTarget
Возможно, я ошибаюсь, но «EventTarget» обычно автоматически устанавливается браузером как элемент, на котором было запущено/запущено событие. Что вы пытаетесь сделать? Он * чувствует * из ограниченной информации в вашем вопросе, что вы должны использовать 'EventTarget.addEventListener()', но я очень, очень не уверен в ваших намерениях до сих пор. –