Cómo pasar argumentos en una referencia de función

Estoy buscando una forma de guardar la referencia a dos objetos de this en una función llamada después de que un evento se active en jQuery: this referencia al objeto en el que se define el método (por lo que puedo usar this.anotherObjectFunction() ) y this referencia a el objeto que desencadenó el evento, para que pueda usar $(this).someJQueryFunction más adelante. La forma en que me gustaría hacerlo es pasar this (function object) referencia this (function object) como un argumento a la función. Desafortunadamente, la función debe ser llamada por jQuery, no por mí, por lo que se pasa como referencia, es decir,

 someFunction: function() { ... cell.$el.on('click', 'li.multiselect-option', this.myClickFunction); ... }, myClickFunction: function(objectReference) { //It should be able to call methods of that object. objectReference.anotherFunction(); //And reference to the clicked item. $(this).html("Don't click me anymore!!!"); } 

Soy consciente del hecho de que puedo hacer algo como

 cell.$el.on('click', 'li.multiselect-option', myFunction.bind(this)); ... myClickFunction: function(event) { this.anotherFunction(); $(event.currentTarget).html("Don't click me anymore!!!"); } 

Pero esta solución no responde realmente a la pregunta, ya que no muestra cómo pasar argumentos adicionales y en el futuro puede ser necesario pasar otra (no, no quiero registrarlos como campos en el objeto) .

No se permiten funciones anónimas a menos que puedan eliminarse fácilmente con la función cell.$el.off() que las eliminará solo a ellas (hay otras funciones asociadas con los mismos objetos y eventos al mismo tiempo y deben permanecer intactas ).

ACTUALIZAR:

Por ninguna función anónima me refiero a soluciones como:

 var self = this; cell.$el.on('click', 'li.multiselect-option', function() { self.MyClickFunction(self, this); }); 

No funcionarán porque tendré que usar la cell.$el.off() con la referencia de función (prototipo de 3 argumentos) para eliminar esta única función y solo esta, dejando otras funciones vinculadas tanto al mismo elemento como al mismo evento.

Jquery .on evento tiene opción para pasar el argumento como parámetro en el controlador de eventos como este

 cell.$el.on('click', 'li.multiselect-option', {arg1:'arg1' , arg2:'arg2'} , myFunction); ... myClickFunction: function(event) { alert(event.data.arg1); alert(event.data.arg2); this.anotherFunction(); $(event.currentTarget).html("Don't click me anymore!!!"); } 

Pasando datos al manejador

Si se proporciona un argumento de datos a .on () y no es nulo o no definido, se pasa al controlador en la propiedad event.data cada vez que se desencadena un evento. El argumento de datos puede ser de cualquier tipo, pero si se usa una cadena, el selector debe proporcionarse o pasarse explícitamente como nulo para que los datos no se confundan con un selector. La mejor práctica es usar un objeto plano para que se puedan pasar varios valores como propiedades.

o de otra manera

 cell.$el.on('click', 'li.multiselect-option', function() { myClickFunction("hai" , "bye"); }); myClickFunction: function(arg1, arg2) { alert(arg1); alert(arg2); } 

Y también sugeriría una solución sin complementos a la pregunta “cómo suministrar un parámetro para la referencia de función”

Ejemplo

 function x(a){ console.log(a); } setInterval('x(1)',1000);