CustomEvent is an interface that represents events created by an application for any purpose. It inherits any properties or methods from the parent element that it comes from. It is possible that custom events may break if it is coming from what is called "Privileged code" like an extension, being sent to non-privileged code like regular webpages.
custom events are constructed by typing CustomEvent(). properties of custom events are CustomEvent.detail. and you can initalize them by typing CustomEvent.initCustomEvent().
Custom events are used because, as the name suggests, the interface is very modular and customizable, and can be used to carry any custom data that you might have. it can also return just about any custom data you might think of.
We discussed the Custom events, and how it is constructed. We also discussed why custom events are used, specificially for the main reason that it is extremely modular and extremely customizable.