И вообще у Вас реализация не правильная, лучше сразу создавать элемент.
function Modal() {
this.element = document.createElement('div');
};
Modal.prototype.show = function() {
document.body.appendChild(this.element);
this.element.dispatchEvent(new Event('show'));
};
Modal.prototype.hide = function() {
document.body.removeChild(this.element);
this.element.dispatchEvent(new Event('hide'));
};
var modal = new Modal();
modal.element.addEventListener('show', function() {
alert('Hello world!');
});
modal.show();