w3schools polyfill new customevent custom javascript dom-events

javascript - polyfill - jquery custom events



Evento vs CustomEvent (1)

No es lo mismo. No puedes establecer el detail de un CustomEvent real:

var event = new CustomEvent(''myevent'', {detail:123}); event.detail = 456; // Ignored in sloppy mode, throws in strict mode console.log(event.detail); // 123 var event = new Event(''myevent''); event.detail = 123; // It''s not readonly event.detail = 456; console.log(event.detail); // 456

Sí, puedes usar Object.defineProperty . Pero supongo que el punto es que el argumento de CustomEvent se suponía que debía establecer algunos datos internos del evento. Ahora solo considera el detail , que no se usa internamente. Pero una especificación futura podría agregar algo nuevo, y entonces es posible que no pueda configurar los datos internos mediante el uso de propiedades.

Un CustomEvent también se hereda de CustomElement.prototype . Eso solo agrega detail y el obsoleto initCustomEvent . Pero puedes agregar tus propios métodos o propiedades allí, que no serán heredados por otros eventos. Pero no recomiendo esto, no deberías modificar los objetos que no tienes.

Básicamente, puedes usar CustomEvent para clasificar el evento de manera diferente a otros eventos. Ver este gráfico de una vieja especificación.

Me preguntaba cuál es el propósito de CustomEvent , ya que puede ser fácilmente imitado por un buen Event antiguo.

Entonces, ¿cuál es la diferencia entre:

var e = new Event("reload"); e.detail = { username: "name" }; element.dispatchEvent(e);

y

var e = new CustomEvent("reload", { detail: { username: "name" } }); inner.dispatchEvent(e);

¿Por CustomEvent existe CustomEvent si es fácil adjuntar datos personalizados a un objeto de evento normal?