addEventListener en objeto personalizado

He creado un objeto que tiene varios métodos. Algunos de estos métodos son asíncronos y, por lo tanto, quiero usar eventos para poder realizar acciones cuando se realizan los métodos. Para hacer esto intenté agregar el addEventListener al objeto.

jsfiddle

var iSubmit = {
    addEventListener: document.addEventListener || document.attachEvent,
    dispatchEvent: document.dispatchEvent,
    fireEvent: document.fireEvent,   


    //the method below is added for completeness, but is not causing the problem.

    test: function(memo) {
        var name = "test";
        var event;
        if (document.createEvent) {
            event = document.createEvent("HTMLEvents");
            event.initEvent(name, true, true);
        } else {
            event = document.createEventObject();
            event.eventType = name;
        }
        event.eventName = name;
        event.memo = memo || { };

        if (document.createEvent) {
            try {
                document.dispatchEvent(event);
            } catch (ex) {
                iAlert.debug(ex, 'iPushError');
            }
        } else {
            document.fireEvent("on" + event.eventType, event);
        }
    }
}

iSubmit.addEventListener("test", function(e) { console.log(e); }, false);


//This call is added to have a complete test. The errors are already triggered with the line before this one.

iSubmit.test();

Esto devolverá un error:Failed to add eventlisterens: TypeError: 'addEventListener' called on an object that does not implement interface EventTarget."

Ahora este código se usará en una aplicación de phonegap y cuando lo haga, estará funcionando en Android / ios. Sin embargo, durante las pruebas, sería bueno si pudiera hacer que funcionara en al menos un solo navegador.

PS> Sé que podría habilitar el burbujeo y luego escuchar la raíz del documento, pero me gustaría tener un poco de POO donde cada objeto pueda trabajar por sí solo.

Respuestas a la pregunta(10)

Su respuesta a la pregunta