![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 7 Dołączył: 3.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Na wstępie chcialbym zaznaczyć, że stworzenie tego nie nastręcza mi problemów. Bardziej nie daje mi spokoju czy aby nie robię tego jakoś naokoło, nieoptymalnie. Być może istnieje jakiś wygodniejszy nieoczywisty dla mnie sposób? http://jsfiddle.net/WiruSSS/zPXUK/ |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 205 Pomógł: 43 Dołączył: 5.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wow... ok, z mojej strony powiem tak:
Cytat ..a jeszcze odnośnie var i przecinków. Tutaj chyba też jest kilka zdań na ten temat. Ja się trzymam konwencji Stoyana Stefanova. Zysk wydajności wg zasady deklaracji jak najbliżej użycia wg mnie jest na tyle znikomy, że wolę jednak bardziej czytelny dla mnie sposób, wpierw wszystko deklaruję, potem używam. tutaj mi akurat o wydajność nie chodziło... bo ja właśnie uważam deklarowanie zmiennych tam gdzie się pojawiają za bardziej czytelne w większości przypadków, są od tego wyjątki. Na temat Function.bind(context) czyli obiekt.click(pokaz.bind(this));... ta funkcja zwraca nową funkcję, która zawsze wykona się w kontekście tego co jest w zmiennej "context", czyli w twoim przypadku - "this". Chodzi ot to, że używając tego podejścia, które przedstawiłeś - gdybyś w którejś z tych funkcji anonimowych użył słowa this to miałbyś w nim pewnie obiekt DOM na którym jest wykonywany click. Używając funkcji "bind" w kontekście zawsze będziesz miał obiekt "slideMenu". Gdybyś miał coś takiego, bez używania "bind":
a z użyciem bind... wszystko by było ok (pomijając fakt, że 2 funkcje animate by sie ze sobą pogryzły, ale nie chodzi tu o funkcjonalność tylko logikę "bind"). Mi teraz Twój kod bardzo się podoba. JS to język programowania, a mówiąc po polsku nie bełkoczemy tylko mówimy do rzeczy (IMG:style_emoticons/default/smile.gif) . Przy okazji zauważ, że gdybyś z innego miejsca skryput chciał zamknąć "slideMenu" to wystarczy slideMenu.hideMenu(); EDIT: Jeszcze jedna sprawa: zamiast pisać w każdej metodzie (funkcji) "var menu = $(this).children();" mógłbyś to zapisać właśnie w obiekcie "slideMenu", ale do tego potrzebujesz konstruktora "SlideMenu".... aby każde menu było osobnym obiektem SlideMenu. No ale to już jak chcesz. Ten post edytował lukasz1985 12.09.2013, 19:46:56 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 06:09 |