Controlador de eventos Javascript con parámetros

Quiero hacer un eventHandler que pase el evento y algunos parámetros. El problema es que la función no recibe el elemento. Aquí hay un ejemplo:

<code>doClick = function(func){
    var elem = .. // the element where it is all about
    elem.onclick = function(e){
        func(e, elem);
    }
}
doClick(function(e, element){
    // do stuff with element and the event
});
</code>

El 'elem' debe definirse fuera de la función anónima. ¿Cómo puedo obtener el elemento pasado para usar dentro de la función anónima? ¿Hay alguna forma de hacer esto?

¿Y qué hay de addEventListener? Parece que no puedo pasar el evento a través de un addEventListener ¿verdad?

Actualizar

Parecía solucionar el problema con 'esto'

<code>doClick = function(func){
    var that = this;
    this.element.onclick = function(e){
        func(e, that);
    }
}
</code>

Donde este contiene este elemento. El elemento al que puedo acceder en la función.

El addEventListener

Pero me pregunto sobre el addEventListener:

<code>function doClick(elem, func){
    element.addEventListener('click', func(event, elem), false);
}
</code>

Respuestas a la pregunta(7)

Su respuesta a la pregunta