Cytat(stefan33 @ 13.09.2012, 09:31:20 )

Co do zmiennych protected to natknalem sie na taki artykul wiec widac, ze js to ciezki kawalek chleba:
http://code42.pl/2010/12/19/obiektowy-java...wietego-graala/Chyba nawet ja to kiedyś czytałem ;p - ale jak już wspomniałem i rozwinąłem to co ja i większość rozumie pod "protected" to jak ktoś będzie chciał tą zmienną zrównać z ziemią to to zrobi choćby specjalnie dziedzicząc... więc jak już wspomniałem raczej w granicach zdrowego rozsądku sama notacja tutaj powinna wystarczyć, a resztę jeśli fragment programu musisz udostępnić bez możliwości naruszenia kodu, to całość kapsułkujesz i udostępniasz główny interfejs, a jak inny programista bezpiecznie coś chce zmieniać to widzi na co zwracać uwagę jeśli to nie jest zakapsułkowane...
Cytat(stefan33 @ 13.09.2012, 09:31:20 )

Czy takie bindowania sa poprawne? Czy jakies jest lepsze/gorsze, czy po prostu uzywac sobie zaleznie od potrzeb?
oba są poprawne więc wątek rozwinę na inne tory... ale wcześniej napomnę, iż minus podpinania zdarzeń "onload" i im podobnych bezpośrednio to maksymalnie jeden listener (obiekt|funkcja nasłuchująca) do elementu, lepszy by był tutaj addEventListener (IE chyba attachEvent), a rozwiązanie uniwersalne w bibliotekach np. jQuery to po prostu .bind lub aliasy pewnych przypadków bezpośredniego wywołania jak .click...
miałem zejść na inne tory, więc a propo pierwszego skoro użyłeś nazwy "jakasKlasa" chciałbym wspomnieć, iż ostatnio zwłaszcza w świecie PHP modne stało się określenie Dependy Injection (jakoś tak się pisze ;p) - widzę, że raczej jesteś w temacie to się nie rozpisuję ;p - coby klasy niby były bardziej uniwersalne... ale tu ja tego nie piszę w kierunku, że jest źle, wszystko zależy od kontekstu i należy rozróżniać programowanie strukturalne od programowania obiektowego i od programowania zorientowanego obiektowo ;p (nie chce mi się przytaczać pewnych regułek ale OOP najbardziej charakterystyczne jest dla javy choć i tam można myśleć strukturalnie), co do bindowania wspomniałem wyżej a i jeszcze temat bindowania rozwinę...
druga technika zwłaszcza dotycząca kapsułkowania przez (function(){})() jest przydatna w celu skapsułkowania (ukrycia dostępu przed resztą programu) fragmetu kodu lub w celu przekazania zmiennej (bądź referencji do obiektu) którą chce się podpiąć pod bindowaną funkcję, gdzie dana zmienna zmienia swoją wartość choć mogła by być dostępna w skope bindowanej funkcji... akurat w Twoim fragmencie kodu nie potrzebnie robiłeś przypisywania funkcji anonimowej podczas, gdy ona nic nie robiła, zamiast:
divPrzycisk.onclick=function() { przekazanaFunkcja(); }
wystarczyło napisać:
divPrzycisk.onclick=przekazanaFunkcja;
lub:
divPrzycisk.onclick=this.jakasFunkcja;
i tutaj znowu zboczę z tematu choć tamten jeszcze pociągnę... jeśli na stronie jest mnóstwo elementów i przypisujesz mnóstwo listenerów tych samych to dużego narzutu pamięci nie będzie gdyż przypisujesz referencję do tej samej funkcji | obiektu różnym obiektom, jednak to nie jest zalecane przy bindowaniu powiedzmy setek (zapomnij o liczbach, to przykład, nie jestem programista i nie na wszystkie testy mam czas) tych samych elementów (np. duuuuża tabelka i wiele wierszy), to bardziej optymalna będzie technika zaimplementowana w metodzie z jQuery która dawniej nazywała się .live (ale nasłuchiwała na całym dokumencie chyba pod "body") a teraz jest już dostępne .delegate - na czym to polega, bindujesz najniższego rodzica (wspólny element) i sprawdzasz kliknięcia dla dzieci, pomijasz bindowanie tysięcy elementów (co może zająć czas) a dodatkowo masz nasłuch na elementu dodane do danego drzewa znacznie później np. przez AJAX, tą technikę zrozumiesz jak zrozumiesz propagację zdarzeń w drzewie DOM i będziesz umiał wtedy to sam implementować w natywnym JavaScript (choć może czasem wystarczy wiedza jak to działa, po co tworzyć koło od nowa ^^)...
ale sam ten zapis z drugiej metody bardziej mi się kojarzy z przekazywaniem argumentów, gdzie np. podpinałeś do wielu elementów podobną funkcję a chciałeś wywołać dodatkowo jakąś metodę, czyli to co pokazałeś ale zrobić coś więcej... i tu głupi przykład jak z Twoim bindem samo zapamiętanie który to element bindowany w pętli (bez tego z referencji pamiętało by ostatnią iterację)
for(i = 0; i<100; ++i) // np niżej to kolekcja elementów
divPrzycisk[i].onclick=(function(i_wartosc){return function(){jakasFunkcja(i_wartosc);}})(i);
gdzie "jakasFunkcja" jest w skope widoczności, ale zwracam uwagę, iż do kolejnego elementu przypisywana jest nowa anonimowa funkcja i jest zapamiętywany stan zmiennej "i" - często ta technika przydaje się też przy korzystaniu z setTimeout(...) (oczywiście bez niejawnego evala ;p), gdzie to co napisałem wyglądało prawie jak to co Ty napisałeś z tą różnicą, iż w efekcie skrócenia można było z tym samym skutkiem zapisać divPrzycisk.onclick=this.jakasFunkcja;
ps. dawniej jak poznawałem JS to trochę przeglądałem kod biblioteki Prototype [nie pamiętam kto wspomniał, iż tam kod jest samo dokumentujący się] (kod był i raczej dalej jest czytelnie napisany - choćby z tego względu warto choć na 5 min rzucić okiem ;]), wtedy w jQuery była jedna większa sieczka, teraz jest duuużo lepiej jak pamiętam z przed roku i w sumie jQuery to chyba najlepsza minimalistyczna biblioteka do JS, a plusem jest implementacja biblioteki Sizzle do wyszukiwania elementów po CSS (nowe przeglądarki w czystym js to .querySelector) i kilka przydatnych tricków jak .delegate (dawniej coś podobnego na własną rękę implementowałem w czystym JS)
sorki, że się rozpisałem, ale znowu dziś świętowałem w granicach zdrowego rozsądku a mam co świętować ^^, jutro jadę odebrać żonkę i córunię (fajnie mała poskrzekuje ^^ - a mamusi już dziś w nocy dała się w kość ^^
pozdro ;]