Kontekst onclick eventa je dokument, ker se na njem zgodi event. V javascriptu je pač tako. :)
Lahko uporabiš closure, kjer ohraniš referenco:
document.body.addEventListener('click', function (obj){ return (function() { obj.hide() })}(this), false);
Če to razčleniš, dobiš tole:
document.body.addEventListener('click',
function (obj) {
return (
function() {
obj.hide()
})
}(this),
false);
V besedah: na event click ti pripneš anonimno funkcijo s parametrom obj, ki jo že takoj izvedeš in ji podaš this, ona pa vrne novo anonimno funkcijo, ki ohrani parameter obj iz konteksta, kjer je bila klicana. Closures ftw!
Še drug primer in obširnejša razlaga: http://www.jibbering.com/faq/faq_notes/closures.html#clSto
lp, fat