fatg

Statistika

Pridružen/a:
28 jan 2008, 19:20
Zadnjič aktiven:
Prispevki:
Teme:
1 | Vse teme
73
2
0
#6

aja, znotraj si! potem si zgleda naredil closure in tista notranja funkcija drži referenco na obj. Na nek način enako, kot moja rešitev, samo za eno stopnjo manj komplicirano. Ne vem pa, če je ta način požegnan od profijev. Zgleda že v redu :).



lp


všeč(0) ni všeč(0) spam(0)
#4

če se ne motim, si s tem ustvaril "globalno" referenco, imenovano obj. Zadevo si nastavil v vrhnjem kontekstu (torej v objektu window). Ko se zgodi event, ti klic na funkcijo kliče v bistvu window.obj.hide(). Če vprašaš mene, je ta rešitev problematična, ker piše direktno v window. Če pa že itak imaš neko referenco na obstoječi objekt, potem pa le uporabi to.


všeč(0) ni všeč(0) spam(0)
#2

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


všeč(0) ni všeč(0) spam(0)