E-book details

JavaScript. Programowanie obiektowe

JavaScript. Programowanie obiektowe

Stoyan Stefanov

Ebook

Poznaj obiektowe możliwości JavaScript!

  • Jak rozpocząć przygodę z językiem JavaScript?
  • Jak rozszerzać obiekty wbudowane?
  • Jak pracować w środowisku przeglądarki?

JavaScript jest obiektowym, skryptowym językiem programowania. Choć swą błyskotliwą karierę język ten rozpoczął ponad dwanaście lat temu, swoimi możliwościami wciąż potrafi zaskoczyć nawet doświadczonego programistę. Ostatnio — dzięki technologii AJAX — znów osiągnął on swą szczytową formę. Wykorzystując w odpowiedni sposób jego właściwości, sprawisz, że twój serwis WWW stanie się bardziej interaktywny i dynamiczny.

Dzięki tej książce dowiesz się, w jaki sposób użyć do swoich celów obiektowych możliwości języka JavaScript. Jednak zanim zapoznasz się z tymi tematami, autor w niezwykle przejrzysty sposób przedstawi Ci podstawy tego języka. Zobaczysz, w jaki sposób działają funkcje, pętle oraz model DOM. Ponadto nauczysz się korzystać ze wzorców projektowych, wyrażeń regularnych oraz prototypów. Pomimo zaawansowanej tematyki poruszanej przez autora tej książki dzięki przejrzystemu językowi i klarownemu układowi stanowi ona świetną lekturę również dla początkujących programistów.

  • Pojęcia związane z programowaniem obiektowym
  • Typy danych, tablice, pętle, sterowanie wykonaniem
  • Wykorzystanie funkcji
  • Domknięcia
  • Obiekty wbudowane
  • Zastosowanie konstruktorów
  • Tablice asocjacyjne
  • Użycie prototypów
  • Rozszerzanie obiektów wbudowanych
  • Dziedziczenie
  • Praca w środowisku przeglądarki (modele BOM i DOM)
  • Wzorce kodowania i wzorce projektowe

Od podstaw do sprawnego programowania obiektowego!

O autorze (13)

O recenzentach (15)

Przedmowa (19)

  • Co znajdziesz w tej książce? (19)
  • Konwencje (20)

Rozdział 1. Wprowadzenie (23)

  • Trochę historii (24)
  • Zapowiedź zmian (25)
  • Teraźniejszość (26)
  • Przyszłość (26)
  • Programowanie obiektowe (27)
    • Obiekty (27)
    • Klasy (28)
    • Kapsułkowanie (28)
    • Agregacja (29)
    • Dziedziczenie (29)
    • Polimorfizm (30)
  • Programowanie obiektowe - podsumowanie (30)
  • Konfiguracja środowiska rozwijania aplikacji (31)
    • Niezbędne narzędzia (31)
  • Korzystanie z konsoli Firebug (32)
  • Podsumowanie (33)

Rozdział 2. Proste typy danych, tablice, pętle i warunki (35)

  • Zmienne (35)
    • Wielkość liter ma znaczenie (36)
  • Operatory (37)
  • Proste typy danych (40)
    • Ustalanie typu danych - operator typeof (41)
    • Liczby (41)
      • Liczby ósemkowe i szesnastkowe (41)
      • Wykładniki potęg (42)
      • Nieskończoność (43)
      • NaN (45)
    • Łańcuchy znaków (45)
      • Konwersje łańcuchów (46)
      • Znaki specjalne (47)
    • Typ boolean (48)
      • Operatory logiczne (49)
      • Priorytety operatorów (51)
      • Leniwe wartościowanie (52)
      • Porównywanie (53)
    • Undefined i null (54)
  • Proste typy danych - podsumowanie (56)
  • Tablice (56)
    • Dodawanie i aktualizacja elementów tablicy (57)
    • Usuwanie elementów (58)
    • Tablice tablic (58)
  • Warunki i pętle (60)
    • Bloki kodu (60)
      • Warunki if (61)
      • Sprawdzanie, czy zmienna istnieje (62)
      • Alternatywna składnia if (63)
      • Switch (63)
    • Pętle (65)
      • Pętla while (66)
      • Pętla do...while (66)
      • Pętla for (66)
      • Pętla for...in (69)
  • Komentarze (70)
  • Podsumowanie (71)
  • Ćwiczenia (71)

Rozdział 3. Funkcje (73)

  • Czym jest funkcja? (74)
    • Wywoływanie funkcji (74)
    • Parametry (74)
  • Funkcje predefiniowane (76)
    • parseInt() (76)
    • parseFloat() (78)
    • isNaN() (79)
    • isFinite() (79)
    • Encode/Decode URIs (80)
    • eval() (80)
    • Bonus - funkcja alert() (81)
  • Zasięg zmiennych (81)
  • Funkcje są danymi (83)
    • Funkcje anonimowe (84)
    • Wywołania zwrotne (84)
    • Przykłady wywołań zwrotnych (85)
    • Funkcje samowywołujące się (87)
    • Funkcje wewnętrzne (prywatne) (87)
    • Funkcje, które zwracają funkcje (88)
    • Funkcjo, przepiszże się! (89)
  • Domknięcia (90)
    • Łańcuch zakresów (91)
    • Zasięg leksykalny (91)
    • Przerwanie łańcucha za pomocą domknięcia (93)
      • Domknięcie 1. (94)
      • Domknięcie 2. (95)
      • Domknięcie 3. i jedna definicja (96)
      • Domknięcia w pętli (96)
    • Funkcje dostępowe (98)
    • Iterator (99)
  • Podsumowanie (100)
  • Ćwiczenia (100)

Rozdział 4. Obiekty (103)

  • Od tablic do obiektów (103)
    • Elementy, pola, metody (105)
    • Tablice asocjacyjne (105)
    • Dostęp do własności obiektu (106)
    • Wywoływanie metod obiektu (107)
    • Modyfikacja pól i metod (108)
    • Wartość this (109)
    • Konstruktory (109)
    • Obiekt globalny (110)
    • Pole constructor (112)
    • Operator instanceof (112)
    • Funkcje zwracające obiekty (113)
    • Przekazywanie obiektów (114)
    • Porównywanie obiektów (114)
    • Obiekty w konsoli Firebug (115)
  • Obiekty wbudowane (117)
    • Object (117)
    • Array (118)
      • Ciekawe metody obiektu Array (120)
    • Function (122)
      • Własności obiektu Function (123)
      • Metody obiektu Function (125)
      • Nowe spojrzenie na obiekt arguments (126)
    • Boolean (127)
    • Number (128)
    • String (130)
      • Ciekawe metody obiektu String (132)
    • Math (135)
    • Date (136)
      • Metody działające na obiektach Date (138)
    • RegExp (140)
      • Pola obiektów RegExp (141)
      • Metody obiektów RegExp (142)
      • Metody obiektu String, których parametrami mogą być wyrażenia regularne (143)
      • search() i match() (143)
      • replace() (144)
      • Wywołania zwrotne replace (145)
      • split() (146)
      • Przekazanie zwykłego tekstu zamiast wyrażenia regularnego (146)
    • Obsługa błędów za pomocą obiektów Error (146)
  • Podsumowanie (150)
  • Ćwiczenia (151)

Rozdział 5. Prototypy (155)

  • Pole prototype (155)
    • Dodawanie pól i metod przy użyciu prototypu (156)
    • Korzystanie z pól i metod obiektu prototype (157)
    • Własne pola obiektu a pola prototypu (158)
    • Nadpisywanie pól prototypu własnymi polami obiektu (159)
      • Pobieranie listy pól (160)
    • isPrototypeOf() (162)
    • Ukryte powiązanie __proto__ (163)
  • Rozszerzanie obiektów wbudowanych (165)
    • Rozszerzanie obiektów wbudowanych - kontrowersje (166)
    • Pułapki związane z prototypami (167)
  • Podsumowanie (169)
  • Ćwiczenia (170)

Rozdział 6. Dziedziczenie (171)

  • Łańcuchy prototypów (172)
    • Przykładowy łańcuch prototypów (172)
    • Przenoszenie wspólnych pól do prototypu (175)
  • Dziedziczenie samego prototypu (177)
    • Konstruktor tymczasowy - new F() (178)
  • Uber: dostęp do obiektu-rodzica (180)
  • Zamknięcie dziedziczenia wewnątrz funkcji (181)
  • Kopiowanie pól (182)
  • Uwaga na kopiowanie przez referencję! (184)
  • Obiekty dziedziczą z obiektów (186)
  • Głębokie kopiowanie (187)
  • object() (189)
  • Połączenie dziedziczenia prototypowego z kopiowaniem pól (190)
  • Dziedziczenie wielokrotne (191)
    • Miksiny (193)
  • Dziedziczenie pasożytnicze (193)
  • Wypożyczanie konstruktora (194)
    • Pożycz konstruktor i skopiuj jego prototyp (196)
  • Podsumowanie (197)
  • Studium przypadku: rysujemy kształty (200)
    • Analiza (200)
    • Implementacja (201)
    • Testowanie (204)
  • Ćwiczenia (205)

Rozdział 7. Środowisko przeglądarki (207)

  • Łączenie JavaScriptu z kodem HTML (207)
  • BOM i DOM - przegląd (208)
  • BOM (209)
    • Ponownie odkrywamy obiekt window (209)
    • window.navigator (210)
    • Firebug jako ściąga (210)
    • window.location (211)
    • window.history (212)
    • window.frames (213)
    • window.screen (214)
    • window.open() i window.close() (215)
    • window.moveTo(), window.resizeTo() (216)
    • window.alert(), window.prompt(), window.confirm() (216)
    • window.setTimeout(), window.setInterval() (217)
    • window.document (219)
  • DOM (219)
    • Core DOM i HTML DOM (221)
    • Dostęp do węzłów DOM (222)
      • Węzeł document (223)
      • documentElement (224)
      • Węzły-dzieci (224)
      • Atrybuty (225)
      • Dostęp do zawartości znacznika (226)
      • Uproszczone metody dostępowe DOM (227)
      • Rówieśnicy, body, pierwsze i ostatnie dziecko (228)
      • Spacer przez węzły DOM (230)
    • Modyfikacja węzłów DOM (230)
      • Modyfikacja stylu (231)
      • Zabawa formularzami (232)
    • Tworzenie nowych węzłów (233)
      • Metoda w pełni zgodna z DOM (234)
      • cloneNode() (235)
      • insertBefore() (236)
    • Usuwanie węzłów (236)
    • Obiekty DOM istniejące tylko w HTML (238)
      • Starsze sposoby dostępu do dokumentu (239)
      • document.write() (240)
      • Pola cookies, title, referrer i domain (240)
  • Zdarzenia (242)
    • Kod obsługi zdarzeń wpleciony w atrybuty HTML (242)
    • Pola elementów (242)
    • Obserwatorzy zdarzeń DOM (243)
    • Przechwytywanie i bąbelkowanie (244)
    • Zatrzymanie propagacji (246)
    • Anulowanie zachowania domyślnego (248)
    • Obsługa zdarzeń w różnych przeglądarkach (248)
    • Typy zdarzeń (249)
  • XMLHttpRequest (250)
    • Wysłanie żądania (251)
    • Przetworzenie odpowiedzi (252)
    • Tworzenie obiektów XHR w IE w wersjach starszych niż 7 (253)
    • A jak asynchroniczny (254)
    • X jak XML (254)
    • Przykład (254)
  • Podsumowanie (257)
  • Ćwiczenia (258)

Rozdział 8. Wzorce kodowania i wzorce projektowe (261)

  • Wzorce kodowania (262)
    • Izolowanie zachowania (262)
      • Warstwa treści (262)
      • Warstwa prezentacji (263)
      • Zachowanie (263)
      • Przykład wydzielenia warstwy zachowania (263)
    • Przestrzenie nazw (264)
      • Obiekt w roli przestrzeni nazw (264)
      • Konstruktory w przestrzeniach nazw (265)
      • Metoda namespace() (266)
    • Rozgałęzianie kodu w czasie inicjalizacji (267)
    • Leniwe definicje (268)
    • Obiekt konfiguracyjny (269)
    • Prywatne pola i metody (270)
    • Metody uprzywilejowane (271)
    • Funkcje prywatne w roli metod publicznych (272)
    • Funkcje samowywołujące się (273)
    • Łańcuchowanie (273)
    • JSON (274)
  • Wzorce projektowe (275)
    • Singleton (276)
    • Singleton 2 (276)
      • Zmienna globalna (277)
      • Pole konstruktora (277)
      • Pole prywatne (278)
    • Fabryka (278)
    • Dekorator (280)
      • Dekorowanie choinki (280)
    • Obserwator (282)
  • Podsumowanie (285)

Dodatek A: Słowa zarezerwowane (287)

  • Lista słów zarezerwowanych mających specjalne znaczenie w języku JavaScript (287)
  • Lista słów zarezerwowanych na użytek przyszłych implementacji (288)

Dodatek B: Funkcje wbudowane (291)

Dodatek C: Obiekty wbudowane (295)

  • Object (295)
    • Składowe konstruktora Object (296)
    • Składowe obiektów tworzonych przez konstruktor Object (296)
  • Array (298)
    • Składowe obiektów Array (298)
  • Function (301)
    • Składowe obiektów Function (301)
  • Boolean (302)
  • Number (302)
    • Składowe konstruktora Number (303)
    • Składowe obiektów Number (304)
  • String (304)
    • Składowe konstruktora String (305)
    • Składowe obiektów String (305)
  • Date (308)
    • Składowe konstruktora Date (308)
    • Składowe obiektów Date (309)
  • Math (311)
    • Składowe obiektu Math (312)
  • RegExp (313)
    • Składowe obiektów RegExp (314)
  • Obiekty Error (315)
    • Składowe obiektów Error (315)

Dodatek D: Wyrażenia regularne (317)

Skorowidz (323)

  • Title: JavaScript. Programowanie obiektowe
  • Author: Stoyan Stefanov
  • Original title: Object-Oriented JavaScript
  • Translation: Justyna Walkowska
  • ISBN: 978-83-246-5813-8, 9788324658138
  • Date of issue: 2012-06-26
  • Format: Ebook
  • Item ID: jascob
  • Publisher: Helion