Objeto JS this.method () se rompe a través de jQuery
Estoy seguro de que hay una respuesta simple a esto, pero es viernes por la tarde y estoy cansado. :(
No estoy seguro de cómo explicarlo, así que seguiré adelante y publicaré el código de ejemplo ...
Aquí hay un objeto simple:
var Bob =
{ Stuff : ''
, init : function()
{
this.Stuff = arguments[0]
}
, doSomething : function()
{
console.log( this.Stuff );
}
}
Y aquí se está utilizando:
$j = jQuery.noConflict();
$j(document).ready( init );
function init()
{
Bob.init('hello');
Bob.doSomething();
$j('#MyButton').click( Bob.doSomething );
}
Todo funciona, excepto la última línea. Cuando jQuery llama al método doSomething, está anulando 'this' y evitando que funcione.
Tratando de usar soloStuff
tampoco funciona
Entonces, ¿cómo me refiero a las propiedades propias de un objeto de una manera que permita que jQuery lo llame, y también permita que el objeto funcione con el objeto jQuery que llama?
es decir, me gustaría poder hacer cosas como esta:
doSomething : function()
{
console.log( <CurrentObject>.Stuff + $j(<CallerElement>).attr('id') );
}
(Dónde<CurrentObject>
y<CallerElement>
son reemplazados con nombres apropiados.)