Si encuentras algún detalle que no comprendes puedes dejarlo en la sección de comentarios y haremos todo lo necesario de ayudarte lo más rápido posible.
Solución:
Solo asignar una función a una propiedad de un objeto no asocia this
dentro de la función con el objeto. Es la forma en que llamas a la función.
Llamando
.hover(my_zoomin.hoverOn,...)
solo estás pasando la función. No “recordará” a qué objeto pertenecía. Lo que puedes hacer es pasar una función anónima y llamar hoverOn
en el interior:
.hover(function() my_zoomin.hoverOn(); ,...)
Esto hará que el this
en el interior hoverOn
Referirse a my_zoomin
. Entonces la llamada a this.hoverReset()
trabajará. Sin embargo, dentro hoverOn
Vas a no tener una referencia al objeto jQuery creado por el selector.
Una solución sería pasar los elementos seleccionados como parámetro:
var zoomin = function()
// Constructor goes here
;
zoomin.prototype =
hoverOn: function($ele)
this.hoverReset($ele);
// More logic here using jQuery's $ele...
,
hoverReset: function($ele)
// Some logic here.
;
var my_zoomin = new zoomin();
$(".some_class").hover(function()
my_zoomin.hoverOn($(this)); // pass $(this) to the method
, function()
return null;
);
Como siguiente paso, podría considerar hacer una Complemento jQuery.