Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%)
|
tak trochu się zastanawiałem i nie wiem czy są jakieś różnice w wydajności, bądź ważniejsze w sposobie rozwiązywania problemów niuanse... np. w necie większość konstrukcji obiektów wygląda w ten sposób:
no i właśnie a pro po publicznych metod i publicznych zmiennych odnośnie tego this.cokolwiek - akurat mi się nie wygodnie pisze, jakoś wolę taką konstrukcję bez this.cokolwiek i bez pisania new podczas tworzenia nowego obiektu:
i tu moje pytanie - jak jest poprawniej, czy są jakieś znaczące tutaj różnice??... może tak przy okazji jakieś linki do trudniejszych artykułów a ciekawszych z niuansami z góry dziękuje ... sorki za podbicie ale znalazłem jeden motyw w tym co ja używam a ktoś mógłby uznać to za wadę - brak zdefiniowanego instanceof - więc odrazu rozwiązanie na instance of without new (IMG:style_emoticons/default/winksmiley.jpg) - tu już może spowolnienie lekkie - na pętlę nie chce mi się sprawdzać - choć raczej nie powinno być gdyż jest zwrócona tylko referencja... a jak jest sporo metod publicznych to jednak wolę pisać jak w poście wyżej drugi przykład zamiast dla każdej metody poprzedzać this... instance of without new (przykład na zdefiniowanie instancji): Kod java script:g=function(){};function c(){var ll=22; return {k:function(){return ll;}}};function a(ob,cialo){ob.prototype=cialo;return new ob;};h=a(g,c());alert(h instanceof g);void(0) ps. aby instancja zosttała zwrócona to funkcja do której przyrównujemy czy istnieje instancja musi być w zasięgu w miejscu gdzie ją sprawdzamy... dalej szukam jakichś za i przeciw który sposób lepszy - lub niech ktoś napisze, że to jeden h* (IMG:style_emoticons/default/winksmiley.jpg) lub jeśli ktoś chce pisać new a nie chce co chwila pisać this wewnątrz gdyż woli notację json: Kod java script:g=function(){};function c(){var ll=22; return {k:function(){return ll;}}};g.prototype=c();h=new g;alert(h instanceof g);void(0)
Ten post edytował zegarek84 6.01.2010, 16:40:15 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 28.09.2007 Skąd: Gdynia Ostrzeżenie: (0%)
|
Specjalnie dla Ciebie, wielki test:
Oto wyniki: Firefox 3.6 beta 5: 5054, 6622, 5887, 2726 ms Opera 10.10: 2102, 2079, 2925, 1381 ms Chrome 4.0.249.43: 310, 302, 369, 75 ms IE 8: 8085, 8315, 10457, 6007 ms Są to średnie z 3 testów dla wszystkich przeglądarek z wyjątkiem IE, nie chciało mi się tyle czekać. Zdecydowanym faworytem jest klasa utworzona z prototypu, czyli nasze D. Rozwiązanie z funkcją zwracającą obiekt © nie sprawdza się za dobrze w większości przeglądarek. Rozwiązania z funkcją i nieszczęsnym this-em (A i (IMG:style_emoticons/default/cool.gif) uzyskują podobny średni wynik, z przewagami zależnymi od przeglądarki. Pewnie za wcześnie na poważne wnioski, ale ten banalny test wykazuje pewną wyższość konstrukcji z prototypem. Test sprawdza specyficzną rzecz - mianowicie szybkość tworzenia, inicjowania i użycia egzemplarza klasy. Innym razem trzeba sprawdzić jak będą kształtowały się profile wydajności w przypadku iteracji samego użycia egzemplarza, bez jego tworzenia. Sytuacja tworzenia egzemplarza w każdej iteracji jest raczej nietypowa - przez co niezbyt miarodajna. Żeby zakończyć ten odcinek jakimś morałem - wydaje mi się, że ogólny wniosek płynący z tego doświadczenia - 1 ch. (IMG:style_emoticons/default/smile.gif) Są pewne różnice w wydajności, ale generalnie jeśli nie liczymy taktów procka jak w demie na C64 - style klas zostaną chyba w całości w kwestii upodobań danego programisty. PS, mały update, sprawdziłem jeszcze
Uzyskuje nieznacznie gorsze wyniki od D we wszystkich przeglądarkach z wyjątkiem FF, gdzie wychodzi odrobinę szybciej, ale może to być mimo wszystko błąd pomiaru. Myślę sobie, że silniki JS chyba optymizują jakoś definicje via prototype. Ja więc zostaję przy nich, z ulubionym stylem Class.prototype = JSON. (IMG:style_emoticons/default/smile.gif) |
|
|
|
zegarek84 [JavaScript] Obiekty 6.01.2010, 14:52:08
zegarek84 może będzie ciekawa dyskusja ... i a pro po mi cho... 12.01.2010, 16:11:46 ![]() ![]() |
|
Aktualny czas: 5.01.2026 - 09:21 |