Spis treści Przedmowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ix
Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi Mocne i słabe strony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi Tytuł? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii Misja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Droga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv Rozdział 1. Czym jest JavaScript? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O tej książce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O co chodzi z tą nazwą? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specyfikacja języka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wiele twarzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wstecz i w przód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kwestia interpretacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ściśle mówiąc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definicja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 2 3 9 10 15 20 22
Rozdział 2. Badanie JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Każdy plik jest programem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wartości . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deklarowanie i użycie zmiennych . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Porównania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Organizacja kodu w JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . W głąb króliczej nory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 24 25 29 32 34 39 49
Spis treści
JS.indd 7
vii
10/21/2020 6:18:27 AM
viii
JS.indd 8
Rozdział 3. Podróż do korzeni JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Iteracja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Domknięcie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Słowo kluczowe this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prototypy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pytanie „Dlaczego” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50 50 55 58 61 65
Rozdział 4. Szersza perspektywa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filar 1: zakres i domknięcie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filar 2: prototypy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filar 3: typy i koercja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z prądem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Po kolei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67 67 69 69 70 72
Dodatek A. Dalsza analiza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wartości kontra odwołania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tyle postaci funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Warunkowe porównania z koercją . . . . . . . . . . . . . . . . . . . . . . . . . . . . „Klasy” prototypowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74 74 76 79 81
Dodatek B. Ćwicz, ćwicz, ćwicz! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ćwiczenia z porównań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ćwiczenia z domknięć . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ćwiczenia z prototypów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sugerowane rozwiązania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83 83 84 84 87
Spis treści
10/21/2020 6:18:27 AM