5 Spis treści Wstęp ............................................................................................................................11 1. ...
28 downloads
44 Views
3MB Size
Spis treści
Wstęp ............................................................................................................................11 1. Wprowadzenie ............................................................................................................ 15 Wzorce JavaScript — podstawowe cechy Zorientowany obiektowo Brak klas Prototypy Środowisko ECMAScript 5 Narzędzie JSLint Konsola
15 16 16 17 18 18 18 19 20
2. Podstawy ..................................................................................................................... 21 Tworzenie kodu łatwego w konserwacji Minimalizacja liczby zmiennych globalnych Problem ze zmiennymi globalnymi Efekty uboczne pominięcia var Dostęp do obiektu globalnego Wzorzec pojedynczego var Przenoszenie deklaracji — problem rozrzuconych deklaracji var Pętle for Pętle for-in Modyfikacja wbudowanych prototypów Wzorzec konstrukcji switch Unikanie niejawnego rzutowania Unikanie eval() Konwertowanie liczb funkcją parseInt()
21 22 22 24 25 25 26 27 29 31 31 32 32 34
5
Konwencje dotyczące kodu Wcięcia Nawiasy klamrowe Położenie nawiasu otwierającego Białe spacje Konwencje nazewnictwa Konstruktory pisane od wielkiej litery Oddzielanie wyrazów Inne wzorce nazewnictwa Pisanie komentarzy Pisanie dokumentacji interfejsów programistycznych Przykład dokumentacji YUIDoc Pisanie w sposób ułatwiający czytanie Ocenianie kodu przez innych członków zespołu Minifikowanie kodu tylko w systemie produkcyjnym Uruchamiaj narzędzie JSLint Podsumowanie
34 35 35 36 37 38 38 39 39 40 41 42 44 45 46 47 47
3. Literały i konstruktory .................................................................................................49 Literał obiektu Składnia literału obiektowego Obiekty z konstruktora Pułapka konstruktora Object Własne funkcje konstruujące Wartość zwracana przez konstruktor Wzorce wymuszania użycia new Konwencja nazewnictwa Użycie that Samowywołujący się konstruktor Literał tablicy Składnia literału tablicy Pułapka konstruktora Array Sprawdzanie, czy obiekt jest tablicą JSON Korzystanie z formatu JSON Literał wyrażenia regularnego Składnia literałowego wyrażenia regularnego Otoczki typów prostych Obiekty błędów Podsumowanie
6
|
Spis treści
49 50 51 51 52 53 54 54 54 55 56 56 56 57 58 58 59 60 61 62 63
4. Funkcje .........................................................................................................................65 Informacje ogólne Stosowana terminologia Deklaracje kontra wyrażenia — nazwy i przenoszenie na początek Właściwość name funkcji Przenoszenie deklaracji funkcji Wzorzec wywołania zwrotnego Przykład wywołania zwrotnego Wywołania zwrotne a zakres zmiennych Funkcje obsługi zdarzeń asynchronicznych Funkcje czasowe Wywołania zwrotne w bibliotekach Zwracanie funkcji Samodefiniujące się funkcje Funkcje natychmiastowe Parametry funkcji natychmiastowych Wartości zwracane przez funkcje natychmiastowe Zalety i zastosowanie Natychmiastowa inicjalizacja obiektu Usuwanie warunkowych wersji kodu Właściwości funkcji — wzorzec zapamiętywania Obiekty konfiguracyjne Rozwijanie funkcji Aplikacja funkcji Aplikacja częściowa Rozwijanie funkcji Kiedy używać aplikacji częściowej Podsumowanie
65 66 67 68 68 70 70 72 73 73 74 74 75 76 77 77 79 79 80 82 83 84 84 85 87 89 89
5. Wzorce tworzenia obiektów ...................................................................................... 91 Wzorzec przestrzeni nazw Funkcja przestrzeni nazw ogólnego stosowania Deklarowanie zależności Metody i właściwości prywatne Składowe prywatne Metody uprzywilejowane Problemy z prywatnością Literały obiektów a prywatność Prototypy a prywatność Udostępnianie funkcji prywatnych jako metod publicznych
91 92 94 95 96 96 96 98 98 99
Spis treści
|
7
Wzorzec modułu Odkrywczy wzorzec modułu Moduły, które tworzą konstruktory Import zmiennych globalnych do modułu Wzorzec piaskownicy Globalny konstruktor Dodawanie modułów Implementacja konstruktora Składowe statyczne Publiczne składowe statyczne Prywatne składowe statyczne Stałe obiektów Wzorzec łańcucha wywołań Wady i zalety wzorca łańcucha wywołań Metoda method() Podsumowanie
100 102 102 103 103 104 105 106 107 107 109 110 112 112 113 114
6. Wzorce wielokrotnego użycia kodu ..........................................................................115 Klasyczne i nowoczesne wzorce dziedziczenia Oczekiwane wyniki w przypadku stosowania wzorca klasycznego Pierwszy wzorzec klasyczny — wzorzec domyślny Podążanie wzdłuż łańcucha prototypów Wady wzorca numer jeden Drugi wzorzec klasyczny — pożyczanie konstruktora Łańcuch prototypów Dziedziczenie wielobazowe przy użyciu pożyczania konstruktorów Zalety i wady wzorca pożyczania konstruktora Trzeci wzorzec klasyczny — pożyczanie i ustawianie prototypu Czwarty wzorzec klasyczny — współdzielenie prototypu Piąty wzorzec klasyczny — konstruktor tymczasowy Zapamiętywanie klasy nadrzędnej Czyszczenie referencji na konstruktor Podejście klasowe Dziedziczenie prototypowe Dyskusja Dodatki do standardu ECMAScript 5 Dziedziczenie przez kopiowanie właściwości Wzorzec wmieszania Pożyczanie metod Przykład — pożyczenie metody od obiektu Array Pożyczenie i przypisanie Metoda Function.prototype.bind() Podsumowanie 8
|
Spis treści
115 116 117 117 119 119 120 121 122 122 123 124 125 125 126 129 129 130 131 132 133 134 134 135 136
7. Wzorce projektowe ....................................................................................................137 Singleton Użycie słowa kluczowego new Instancja we właściwości statycznej Instancja w domknięciu Fabryka Wbudowane fabryki obiektów Iterator Dekorator Sposób użycia Implementacja Implementacja wykorzystująca listę Strategia Przykład walidacji danych Fasada Pośrednik Przykład Pośrednik jako pamięć podręczna Mediator Przykład mediatora Obserwator Pierwszy przykład — subskrypcja magazynu Drugi przykład — gra w naciskanie klawiszy Podsumowanie
137 138 139 139 141 143 143 145 145 146 148 149 150 152 153 153 159 160 160 163 163 166 169
8. DOM i wzorce dotyczące przeglądarek ..................................................................... 171 Podział zadań Skrypty wykorzystujące DOM Dostęp do DOM Modyfikacja DOM Zdarzenia Obsługa zdarzeń Delegacja zdarzeń Długo działające skrypty Funkcja setTimeout() Skrypty obliczeniowe Komunikacja z serwerem Obiekt XMLHttpRequest JSONP Ramki i wywołania jako obrazy
171 172 173 174 175 175 177 178 178 179 179 180 181 184
Spis treści
|
9
Serwowanie kodu JavaScript klientom Łączenie skryptów Minifikacja i kompresja Nagłówek Expires Wykorzystanie CDN Strategie wczytywania skryptów Lokalizacja elementu // drugie rozwiązanie
Istnieje jednak kilka wzorców oraz sztuczek, o których warto pamiętać, jeśli celem jest tworzenie wysoce wydajnych aplikacji. Oto kilka typowych atrybutów stosowanych przez większość programistów wraz z elementem ...