Tajemnice JavaScriptu. Podręcznik ninja - Helion
Tytuł oryginału: Secrets of the JavaScript Ninja
TÅ‚umaczenie: Piotr Pilch
ISBN: 978-83-246-8504-2
stron: 432, Format: 168x237, okładka: miękka
Data wydania: 2014-05-16
Księgarnia: Helion
Cena książki: 69,00 zł
Najlepsze porady dla programistów JavaScript!
JavaScript to język programowania, który wymaga od programisty szerokiej wiedzy i dokładności. Chwila nieuwagi może spowodować poważne problemy, trudne do wykrycia. Jak sobie radzić w tym wymagającym środowisku? Jak zwinnie poruszać się pomiędzy zastawionymi pułapkami?
Na te i wiele innych pytaÅ„ znajdziesz odpowiedź w tej książce. DziÄ™ki niej bÄ™dziesz zwinnie jak ninja przemykaÅ‚ pomiÄ™dzy niuansami jÄ™zyka JavaScript. W trakcie lektury poznasz dogÅ‚Ä™bnie najlepszÄ… broÅ„ przeciw bÅ‚Ä™dom — debuger oraz testy automatyczne. W kolejnych rozdziaÅ‚ach nauczysz siÄ™ korzystać z potencjaÅ‚u funkcji oraz domknięć. W tej doskonaÅ‚ej książce znajdziesz również szerokie omówienie wyrażeÅ„ regularnych — tematu, który spÄ™dza programistom sen z oczu. Ponadto szczegółowo poznasz zasady programowania obiektowego w JavaScripcie, modyfikowania drzewa DOM, wsparcia dla różnych przeglÄ…darek oraz obsÅ‚ugi zdarzeÅ„. Książka ta zawiera praktyczne porady, które sprawdzÄ… siÄ™ w codziennej pracy z jÄ™zykiem JavaScript. Jest to obowiÄ…zkowa pozycja dla każdego programisty!
Dzięki tej książce:
- nauczysz się pisać testy automatyczne
- wykorzystasz wyrażenia regularne w JavaScripcie
- zmodyfikujesz drzewo DOM
- opanujesz niuanse języka JavaScript
Pisz kod JavaScript jak prawdziwy ninja!
Osoby które kupowały "Tajemnice JavaScriptu. Podręcznik ninja", wybierały także:
- D3.js w akcji 67,42 zł, (20,90 zł -69%)
- Tablice informatyczne. Node.js 16,86 zł, (5,90 zł -65%)
- React i GatsbyJS. Kurs video. Nowoczesne strony internetowe w oparciu o headless CMS i GraphQL 148,98 zł, (59,59 zł -60%)
- TypeScript i React. Kurs video. Tworzenie nowoczesnych komponent 129,00 zł, (51,60 zł -60%)
- Vue.js w praktyce. Kurs video. Poznaj narz 148,98 zł, (59,59 zł -60%)
Spis treści
Tajemnice JavaScriptu. Podręcznik ninja -- spis treści
Przedmowa (9)
Podziękowania (11)
O książce (13)
O autorach (19)
CZĘŚĆ I. PRZYGOTOWANIE DO TRENINGU (21)
Rozdział 1. Zostań wojownikiem (23)
- 1.1. Omawiane biblioteki języka JavaScript (24)
- 1.2. Język JavaScript (25)
- 1.3. Kwestie dotyczące obsługi wielu przeglądarek (26)
- 1.4. Najlepsze obecnie praktyki (30)
- 1.4.1. Najlepsze obecnie praktyki - testowanie (30)
- 1.4.2. Najlepsze obecnie praktyki - analizowanie wydajności (31)
- 1.5. Podsumowanie (32)
Rozdział 2. Broń w postaci testowania i debugowania (33)
- 2.1. Debugowanie kodu (34)
- 2.1.1. Rejestrowanie (34)
- 2.1.2. Punkty wstrzymania (36)
- 2.2. Generowanie testu (38)
- 2.3. Åšrodowiska testowania (40)
- 2.3.1. QUnit (43)
- 2.3.2. YUI Test (43)
- 2.3.3. JsUnit (43)
- 2.3.4. Nowsze Å›rodowiska testów jednostkowych (43)
- 2.4. Fundamenty pakietu testów (44)
- 2.4.1. Asercja (44)
- 2.4.2. Grupy testów (45)
- 2.4.3. Testowanie asynchroniczne (47)
- 2.5. Podsumowanie (49)
CZĘŚĆ II. TRENING UCZNIA (51)
Rozdział 3. Funkcje są najważniejsze (53)
- 3.1. Na czym polega funkcyjność? (54)
- 3.1.1. Dlaczego ważna jest funkcyjna natura języka JavaScript? (55)
- 3.1.2. Sortowanie za pomocÄ… komparatora (60)
- 3.2. Deklaracje (63)
- 3.2.1. Określanie zasięgu i funkcje (66)
- 3.3. Wywołania (71)
- 3.3.1. Od argumentów do parametrów funkcji (72)
- 3.3.2. Wywołanie funkcji jako funkcji (73)
- 3.3.3. Wywołanie funkcji jako metody (74)
- 3.3.4. Wywołanie funkcji jako konstruktora (77)
- 3.3.5. Wywołanie za pomocą metod apply() i call() (80)
- 3.4. Podsumowanie (84)
Rozdział 4. Posługiwanie się funkcjami (87)
- 4.1. Funkcje anonimowe (88)
- 4.2. Rekurencja (90)
- 4.2.1. Rekurencja w funkcjach z nazwÄ… (90)
- 4.2.2. Rekurencja z metodami (92)
- 4.2.3. Problem z podkradanym odwołaniem (93)
- 4.2.4. Wstawiane funkcje z nazwÄ… (95)
- 4.2.5. Właściwość callee (97)
- 4.3. Używanie funkcji jako obiektów (98)
- 4.3.1. Przechowywanie funkcji (99)
- 4.3.2. Funkcje z automatycznym zapamiętywaniem (100)
- 4.3.3. Oszukiwanie metod tablicowych (103)
- 4.4. Listy argumentów o zmiennej dÅ‚ugoÅ›ci (105)
- 4.4.1. Użycie metody apply() do dostarczania zmiennej argumentów (105)
- 4.4.2. Przeciążanie funkcji (107)
- 4.5. Sprawdzanie pod kÄ…tem funkcji (116)
- 4.6. Podsumowanie (118)
Rozdział 5. Zamknięcie się w domknięciach (119)
- 5.1. Sposób dziaÅ‚ania domknięć (120)
- 5.2. Praktyczne wykorzystanie domknięć (125)
- 5.2.1. Zmienne prywatne (125)
- 5.2.2. Wywołania zwrotne i liczniki czasu (127)
- 5.3. PowiÄ…zanie kontekstów funkcji (131)
- 5.4. Częściowe stosowanie funkcji (136)
- 5.5. Przesłanianie działania funkcji (139)
- 5.5.1. Zapamiętywanie (139)
- 5.5.2. Opakowanie funkcji (142)
- 5.6. Funkcje bezpośrednie (144)
- 5.6.1. Zasięg tymczasowy i zmienne prywatne (146)
- 5.6.2. Pętle (150)
- 5.6.3. Opakowywanie biblioteki (152)
- 5.7. Podsumowanie (153)
Rozdział 6. Obiektowość z prototypami (155)
- 6.1. Tworzenie instancji i prototypy (156)
- 6.1.1. Tworzenie instancji obiektu (156)
- 6.1.2. OkreÅ›lanie typu obiektu za poÅ›rednictwem konstruktorów (164)
- 6.1.3. Dziedziczenie i Å‚aÅ„cuch prototypów (166)
- 6.1.4. Prototypy modelu DOM języka HTML (171)
- 6.2. Pułapki! (173)
- 6.2.1. Rozszerzanie obiektu (173)
- 6.2.2. Rozszerzanie liczby (175)
- 6.2.3. Używanie podklas dla wbudowanych obiektów (177)
- 6.2.4. Problemy z tworzeniem instancji (178)
- 6.3. Pisanie kodu bardziej zbliżonego do kodu z klasami (183)
- 6.3.1. Sprawdzanie pod kÄ…tem serializacji funkcji (186)
- 6.3.2. Inicjalizacja podklas (187)
- 6.3.3. Zachowywanie supermetod (188)
- 6.4. Podsumowanie (190)
Rozdział 7. Borykanie się z wyrażeniami regularnymi (193)
- 7.1. Dlaczego wyrażenia regularne są tak ważne? (194)
- 7.2. Odświeżenie informacji o wyrażeniach regularnych (195)
- 7.2.1. Omówienie wyrażeÅ„ regularnych (195)
- 7.2.2. Wyrazy i operatory (197)
- 7.3. Kompilowanie wyrażeń regularnych (201)
- 7.4. Przechwytywanie pasujÄ…cych segmentów (204)
- 7.4.1. Wykonywanie prostych przechwytywań (204)
- 7.4.2. Dopasowywanie za pomocą globalnych wyrażeń regularnych (205)
- 7.4.3. Przywoływanie przechwytywań (207)
- 7.4.4. Grupy bez przechwytywania (208)
- 7.5. Zastępowanie za pomocą funkcji (209)
- 7.6. RozwiÄ…zywanie typowych problemów z wykorzystaniem wyrażeÅ„ regularnych (212)
- 7.6.1. Obcinanie łańcucha (212)
- 7.6.2. Dopasowywanie znaków nowego wiersza (214)
- 7.6.3. Unicode (215)
- 7.6.4. Znaki o zmienionym znaczeniu (216)
- 7.7. Podsumowanie (217)
Rozdział 8. Wątki i liczniki czasu (219)
- 8.1. Sposób dziaÅ‚ania liczników czasu i wÄ…tkowoÅ›ci (220)
- 8.1.1. Ustawianie i usuwanie liczników czasu (220)
- 8.1.2. Wykonywanie licznika czasu w obrębie wątku wykonywania (221)
- 8.1.3. Różnice miÄ™dzy czasami oczekiwania i interwaÅ‚ami (223)
- 8.2. Minimalne opóźnienie licznika czasu i wiarygodność (225)
- 8.3. Radzenie sobie z przetwarzaniem kosztownym obliczeniowo (228)
- 8.4. Scentralizowane kontrolowanie liczników czasu (231)
- 8.5. Testowanie asynchroniczne (235)
- 8.6. Podsumowanie (236)
CZĘŚĆ III. TRENING WOJOWNIKA (237)
Rozdział 9. Alchemia wojownika. Analizowanie kodu w środowisku wykonawczym (239)
- 9.1. Mechanizmy analizy kodu (240)
- 9.1.1. Analizowanie za pomocÄ… metody eval() (240)
- 9.1.2. Analizowanie za pośrednictwem konstruktora Function (243)
- 9.1.3. Analizowanie przy użyciu liczników czasu (244)
- 9.1.4. Analizowanie w zasięgu globalnym (244)
- 9.1.5. Bezpieczne analizowanie kodu (247)
- 9.2. "Dekompilacja" funkcji (248)
- 9.3. Analizowanie kodu w praktyce (251)
- 9.3.1. PrzeksztaÅ‚canie Å‚aÅ„cuchów JSON (251)
- 9.3.2. Importowanie kodu z przestrzeniÄ… nazw (253)
- 9.3.3. Kompresja i ukrywanie kodu JavaScript (254)
- 9.3.4. Dynamiczne przebudowywanie kodu (256)
- 9.3.5. Znaczniki skryptu zorientowanego aspektowo (257)
- 9.3.6. Metajęzyki i języki DSL (258)
- 9.4. Podsumowanie (262)
Rozdział 10. Instrukcje with (263)
- 10.1. O co chodzi z instrukcjÄ… with? (264)
- 10.1.1. Przywoływanie właściwości w zasięgu instrukcji with (264)
- 10.1.2. Przypisania w zasięgu instrukcji with (266)
- 10.1.3. Kwestie dotyczące wydajności (268)
- 10.2. Rzeczywiste przykłady (270)
- 10.3. Importowanie kodu z przestrzeniÄ… nazw (272)
- 10.4. Testowanie (272)
- 10.5. Stosowanie szablonów z instrukcjÄ… with (273)
- 10.6. Podsumowanie (276)
Rozdział 11. Opracowywanie strategii obsługi wielu przeglądarek (277)
- 11.1. Wybór przeglÄ…darek do obsÅ‚ugi (278)
- 11.2. Pięć podstawowych kwestii programistycznych (279)
- 11.2.1. BÅ‚Ä™dy i różnice w przeglÄ…darkach (281)
- 11.2.2. Poprawki bÅ‚Ä™dów w przeglÄ…darce (281)
- 11.2.3. Radzenie sobie z zewnętrznym kodem i znacznikami (283)
- 11.2.4. BrakujÄ…ce funkcje (289)
- 11.2.5. Regresje (290)
- 11.3. Strategie implementowania (292)
- 11.3.1. Bezpieczne poprawki dla różnych przeglÄ…darek (292)
- 11.3.2. Wykrywanie obiektu (294)
- 11.3.3. Symulacja funkcji (295)
- 11.4. Zmniejszanie liczby założeń (301)
- 11.5. Podsumowanie (303)
RozdziaÅ‚ 12. Atrybuty, wÅ‚aÅ›ciwoÅ›ci i arkusze stylów CSS (305)
- 12.1. Atrybuty i właściwości modelu DOM (307)
- 12.1.1. Nazewnictwo w różnych przeglÄ…darkach (308)
- 12.1.2. Ograniczenia dotyczÄ…ce nazw (309)
- 12.1.3. Różnice miÄ™dzy jÄ™zykami XML i HTML (310)
- 12.1.4. DziaÅ‚anie atrybutów niestandardowych (310)
- 12.1.5. Kwestie dotyczące wydajności (311)
- 12.2. Problemy z atrybutami w przypadku obsługi wielu przeglądarek (315)
- 12.2.1. Rozszerzanie nazwy (identyfikatora) modelu DOM (315)
- 12.2.2. Normalizacja adresu URL (317)
- 12.2.3. Atrybut style (318)
- 12.2.4. Atrybut type (319)
- 12.2.5. Problem z indeksem tabulacji (320)
- 12.2.6. Nazwy wÄ™zÅ‚ów (321)
- 12.3. Problemy zwiÄ…zane z atrybutami stylów (321)
- 12.3.1. Gdzie sÄ… moje style? (322)
- 12.3.2. OkreÅ›lanie nazw wÅ‚aÅ›ciwoÅ›ci stylów (324)
- 12.3.3. WÅ‚aÅ›ciwość stylów float (326)
- 12.3.4. Konwersja wartości pikseli (326)
- 12.3.5. Określanie wysokości i szerokości (327)
- 12.3.6. Przenikanie nieprzezroczystości (332)
- 12.3.7. Poskromienie kolorowego koła (335)
- 12.4. Uzyskiwanie stylów obliczanych (338)
- 12.5. Podsumowanie (341)
CZĘŚĆ IV. TRENING MISTRZA (343)
Rozdział 13. Radzenie sobie ze zdarzeniami (345)
- 13.1. Techniki wiązania zdarzeń i anulowania powiązań (346)
- 13.2. Obiekt Event (351)
- 13.3. Zarządzanie procedurami obsługi (355)
- 13.3.1. Scentralizowane przechowywanie powiÄ…zanych informacji (355)
- 13.3.2. Zarządzanie procedurami obsługi zdarzeń (358)
- 13.4. Wyzwalanie zdarzeń (369)
- 13.4.1. Zdarzenia niestandardowe (371)
- 13.5. Propagacja i delegowanie (375)
- 13.5.1. Delegowanie zdarzeń do elementu nadrzędnego (376)
- 13.5.2. Radzenie sobie z mankamentami przeglÄ…darek (377)
- 13.6. Zdarzenie gotowości dokumentu (387)
- 13.7. Podsumowanie (389)
Rozdział 14. Modyfikowanie modelu DOM (393)
- 14.1. Umieszczanie kodu HTML w modelu DOM (394)
- 14.1.1. Przekształcanie kodu HTML w model DOM (396)
- 14.1.2. Wstawianie do dokumentu (399)
- 14.1.3. Wykonywanie skryptu (401)
- 14.2. Klonowanie elementów (403)
- 14.3. Usuwanie elementów (405)
- 14.4. Treść tekstowa (407)
- 14.4.1. Ustawianie tekstu (408)
- 14.4.2. Pobieranie tekstu (409)
- 14.5. Podsumowanie (410)
RozdziaÅ‚ 15. Mechanizmy selektorów CSS (411)
- 15.1. Interfejs API selektorów organizacji W3C (413)
- 15.2. Użycie jÄ™zyka XPath do znajdowania elementów (416)
- 15.3. Implementacja czystego modelu DOM (418)
- 15.3.1. Analizowanie selektora (421)
- 15.3.2. Znajdowanie elementów (422)
- 15.3.3. Filtrowanie zestawu (423)
- 15.3.4. Rekurencja i scalanie (424)
- 15.3.5. WstÄ™pujÄ…cy mechanizm selektorów (425)
- 15.4. Podsumowanie (427)
Skorowidz (429)