JavaScript

Book description

To kolejne wydanie wyczerpującego, kompleksowego przewodnika po języku JavaScript oraz jego najważniejszych klienckich i serwerowych interfejsach API. Książka jest przeznaczona dla programistów, którzy chcą nauczyć się JavaScriptu lub udoskonalić swoje umiejętności tworzenia kodu. Ujęto w niej wersję ES2020 tego języka. Poza praktycznymi wyjaśnieniami dotyczącymi jego struktur i ich stosowania znalazły się tu liczne przykłady, wskazówki i porady. To wydanie zawiera nowe rozdziały poświęcone klasom, modułom, iteratorom, generatorom, promesom i instrukcjom async/await. W efekcie powstał całościowy obraz ekosystemu JavaScript wraz z opisem jego zawiłości, potencjalnych problemów i najlepszych metod radzenia sobie z nimi.

Table of contents

  1. Opinie o książce JavaScript. Przewodnik. Poznaj język mistrzów programowania. Wydanie VII
  2. Wstęp
    1. Konwencje typograficzne
    2. Przykłady kodów
    3. Podziękowania
  3. Rozdział 1. Wprowadzenie do języka JavaScript
    1. 1.1. Poznawanie JavaScriptu
    2. 1.2. Witaj, świecie!
    3. 1.3. Wycieczka po języku JavaScript
    4. 1.4. Przykład: histogram częstości użycia znaków
    5. 1.5. Podsumowanie
  4. Rozdział 2. Struktura leksykalna
    1. 2.1. Tekst programu
    2. 2.2. Komentarze
    3. 2.3. Literały
    4. 2.4. Identyfikatory i zarezerwowane słowa
      1. 2.4.1. Zarezerwowane słowa
    5. 2.5. Unicode
      1. 2.5.1. Sekwencje ucieczki Unicode
      2. 2.5.2. Normalizacja Unicode
    6. 2.6. Opcjonalne średniki
    7. 2.7. Podsumowanie
  5. Rozdział 3. Typy, wartości i zmienne
    1. 3.1. Informacje ogólne i definicje
    2. 3.2. Liczby
      1. 3.2.1. Literały całkowite
      2. 3.2.2 Literały zmiennoprzecinkowe
      3. 3.2.3. Działania arytmetyczne
      4. 3.2.4. Format zmiennoprzecinkowy i błędy zaokrąglenia
      5. 3.2.5. Typ BigInt — dowolnie duże liczby całkowite
      6. 3.2.6. Daty i czas
    3. 3.3. Tekst
      1. 3.3.1. Literały znakowe
      2. 3.3.2. Sekwencje ucieczki w literałach znakowych
      3. 3.3.3. Operacje na ciągach znaków
      4. 3.3.4. Literały szablonowe
        1. Oznakowane literały szablonowe
      5. 3.3.5. Porównywanie ciągu znaków ze wzorcem
    4. 3.4. Wartości logiczne
    5. 3.5. Wartości null i undefined
    6. 3.6. Symbole
    7. 3.7. Obiekt globalny
    8. 3.8. Niemutowalne prymitywne wartości i mutowalne odwołania do obiektu
    9. 3.9. Konwersje typów
      1. 3.9.1. Konwersje i równość wartości
      2. 3.9.2. Jawna konwersja
      3. 3.9.3. Konwersja obiektu na wartość prymitywną
        1. Konwersja obiektu na wartość logiczną
        2. Konwersja obiektu na ciąg znaków
        3. Konwersja obiektu na liczbę
        4. Operatory i szczególne przypadki konwersji
        5. Metody toString() i valueOf()
        6. Algorytmy konwersji obiektów na wartości prymitywne
    10. 3.10. Deklarowanie zmiennych i przypisywanie wartości
      1. 3.10.1. Deklaracje z użyciem słów let i const
        1. Zasięgi zmiennych i stałych
        2. Wielokrotne deklaracje
        3. Deklaracje i typy
      2. 3.10.2. Deklarowanie zmiennych za pomocą instrukcji var
      3. 3.10.3. Przypisania destrukturyzujące
    11. 3.11. Podsumowanie
  6. Rozdział 4. Wyrażenia i operatory
    1. 4.1. Wyrażenia podstawowe
    2. 4.2. Inicjatory obiektów i tablic
    3. 4.3. Wyrażenia definiujące funkcje
    4. 4.4. Wyrażenia dostępu do właściwości
      1. 4.4.1. Warunkowy dostęp do właściwości
    5. 4.5. Wyrażenia wywołujące
      1. 4.5.1. Wywołania warunkowe
    6. 4.6. Wyrażenia tworzące obiekty
    7. 4.7. Przegląd operatorów
      1. 4.7.1. Liczba operandów
      2. 4.7.2. Typy operandów i wyników
      3. 4.7.3. Efekty uboczne operatorów
      4. 4.7.4. Priorytety operatorów
      5. 4.7.5. Wiązanie operatorów
      6. 4.7.6. Kolejność przetwarzania
    8. 4.8. Operatory arytmetyczne
      1. 4.8.1. Operator +
      2. 4.8.2. Jednoargumentowe operatory arytmetyczne
      3. 4.8.3. Operatory bitowe
    9. 4.9. Wyrażenia relacyjne
      1. 4.9.1. Operatory równości i nierówności
        1. Ścisła równość
        2. Równość z konwersją typów
      2. 4.9.2. Operatory porównania
      3. 4.9.3. Operator in
      4. 4.9.4. Operator instanceof
    10. 4.10. Wyrażenia logiczne
      1. 4.10.1. Operator logiczny ORAZ (&&)
      2. 4.10.2. Operator logiczny LUB (||)
      3. 4.10.3. Operator logiczny NIE (!)
    11. 4.11. Wyrażenia przypisujące
      1. 4.11.1. Przypisanie z działaniem
    12. 4.12. Wyrażenia interpretujące
      1. 4.12.1. Funkcja eval()
      2. 4.12.2. Globalne wywołanie funkcji eval()
      3. 4.12.3. Ścisłe wywołanie funkcji eval()
    13. 4.13. Inne operatory
      1. 4.13.1. Operator warunkowy (?:)
      2. 4.13.2. Pierwszy zdefiniowany (??)
      3. 4.13.3. Operator typeof
      4. 4.13.4. Operator delete
      5. 4.13.5. Operator await
      6. 4.13.6. Operator void
      7. 4.13.7. Operator przecinek (,)
    14. 4.14. Podsumowanie
  7. Rozdział 5. Instrukcje
    1. 5.1. Instrukcje wyrażeniowe
    2. 5.2. Instrukcje złożone i puste
    3. 5.3. Instrukcje warunkowe
      1. 5.3.1. Instrukcja if
      2. 5.3.2. Instrukcja else if
      3. 5.3.3. Instrukcja switch
    4. 5.4. Pętle
      1. 5.4.1. Instrukcja while
      2. 5.4.3. Instrukcje do/while
      3. 5.4.3. Pętla for
      4. 5.4.4. Pętla for/of
        1. Pętla for/of z obiektami
        2. Pętla for/of z ciągami znaków
        3. Pętla for/of ze zbiorami i mapami
        4. Iterowanie asynchroniczne za pomocą pętli for/await
      5. 5.4.5. Pętla for/in
    5. 5.5. Skoki
      1. 5.5.1. Instrukcje z etykietami
      2. 5.5.2. Instrukcja break
      3. 5.5.3. Instrukcja continue
      4. 5.5.4. Instrukcja return
      5. 5.5.5. Instrukcja yield
      6. 5.5.6. Instrukcja throw
      7. 5.5.7. Instrukcje try/catch/finally
    6. 5.6. Inne instrukcje
      1. 5.6.1. Instrukcja with
      2. 5.6.2. Instrukcja debugger
      3. 5.6.3. Dyrektywa "use strict"
    7. 5.7. Deklaracje
      1. 5.7.1. Deklaracje const, let i var
      2. 5.7.2. Deklaracja function
      3. 5.7.3. Deklaracja class
      4. 5.7.4. Deklaracje import i export
    8. 5.8. Podsumowanie instrukcji
  8. Rozdział 6. Obiekty
    1. 6.1. Wprowadzenie do obiektów
    2. 6.2. Tworzenie obiektów
      1. 6.2.1. Literały obiektowe
      2. 6.2.2. Tworzenie obiektów za pomocą operatora new
      3. 6.2.3. Prototypy
      4. 6.2.4. Funkcja Object.create()
    3. 6.3. Odpytywanie i ustawianie właściwości
      1. 6.3.1. Obiekty jako tablice asocjacyjne
      2. 6.3.2. Dziedziczenie
      3. 6.3.3. Błędy dostępu do właściwości
    4. 6.4. Usuwanie właściwości
    5. 6.5. Sprawdzanie właściwości
    6. 6.6. Wyliczanie właściwości
      1. 6.6.1. Kolejność wyliczania właściwości
    7. 6.7. Rozszerzanie obiektów
    8. 6.8. Serializacja obiektów
    9. 6.9. Metody obiektów
      1. 6.9.1. Metoda toString()
      2. 6.9.2. Metoda toLocaleString()
      3. 6.9.3. Metoda valueOf()
      4. 6.9.4. Metoda toJSON()
    10. 6.10. Udoskonalona składnia literału obiektowego
      1. 6.10.1. Uproszczone definiowanie właściwości
      2. 6.10.2. Wyliczane nazwy właściwości
      3. 6.10.3. Symbole jako nazwy właściwości
      4. 6.10.4. Operator rozciągania
      5. 6.10.5. Uproszczone definiowanie metod
      6. 6.10.6. Gettery i settery
    11. 6.11. Podsumowanie
  9. Rozdział 7. Tablice
    1. 7.1. Tworzenie tablic
      1. 7.1.1. Literały tablicowe
      2. 7.1.2. Operator rozciągania
      3. 7.1.3. Konstruktor Array()
      4. 7.1.4. Metoda Array.of()
      5. 7.1.5. Funkcja Array.from()
    2. 7.2. Odczytywanie i zapisywanie elementów tablicy
    3. 7.3. Rozrzedzone tablice
    4. 7.4. Długość tablicy
    5. 7.5. Dodawanie i usuwanie elementów tablicy
    6. 7.6. Iterowanie tablic
    7. 7.7. Tablice wielowymiarowe
    8. 7.8. Metody tablicowe
      1. 7.8.1. Metody iterujące
        1. Metoda forEach()
        2. Metoda map()
        3. Metoda filter()
        4. Metody find() i findIndex()
        5. Metody every() i some()
        6. Metody reduce() i reduceRight()
      2. 7.8.2. Spłaszczanie tablic za pomocą metod flat() i flatMap()
      3. 7.8.3. Łączenie tablic za pomocą metody concat()
      4. 7.8.4. Stosy i kolejki, czyli metody push(), pop(), shift() i unshift()
      5. 7.8.5. Podtablice, czyli metody slice(), splice(), fill() i copyWithin()
        1. Metoda slice()
        2. Metoda splice()
        3. Metoda fill()
        4. Metoda copyWithin()
      6. 7.8.6. Metody przeszukujące i sortujące tablice
        1. Metody indexOf() i lastIndexOf()
        2. Metoda includes()
        3. Metoda sort()
        4. Metoda reverse()
      7. 7.8.7. Konwersja tablicy na ciąg znaków
      8. 7.8.8. Statyczne funkcje tablicowe
    9. 7.9. Obiekty podobne do tablic
    10. 7.10. Ciągi znaków jako tablice
    11. 7.11. Podsumowanie
  10. Rozdział 8. Funkcje
    1. 8.1. Definiowanie funkcji
      1. 8.1.1. Deklaracje funkcji
      2. 8.1.2. Wyrażenia funkcyjne
      3. 8.1.3. Funkcje strzałkowe
      4. 8.1.4. Zagnieżdżone funkcje
    2. 8.2. Wywoływanie funkcji
      1. 8.2.1. Wywołanie funkcji
      2. 8.2.2. Wywołanie metody
      3. 8.2.3. Wywołanie konstruktora
      4. 8.2.4. Wywołanie pośrednie
      5. 8.2.5. Niejawne wywołanie funkcji
    3. 8.3. Argumenty i parametry funkcji
      1. 8.3.1. Parametry opcjonalne i domyślne
      2. 8.3.2. Parametry resztowe i lista argumentów o zmiennej długości
      3. 8.3.3. Obiekt Arguments
      4. 8.3.4. Operator rozciągania w wywołaniach funkcji
      5. 8.3.5. Destrukturyzacja argumentów funkcji do jej parametrów
      6. 8.3.6. Typy argumentów
    4. 8.4. Funkcje jako wartości
      1. 8.4.1. Definiowanie własnych właściwości funkcji
    5. 8.5. Funkcje jako przestrzenie nazw
    6. 8.6. Domknięcia
    7. 8.7. Właściwości, metody i konstruktory funkcji
      1. 8.7.1. Właściwość length
      2. 8.7.2. Właściwość name
      3. 8.7.3. Właściwość prototype
      4. 8.7.4. Metody call() i apply()
      5. 8.7.5. Metoda bind()
      6. 8.7.6. Metoda toString()
      7. 8.7.7. Konstruktor Function()
    8. 8.8. Programowanie funkcyjne
      1. 8.8.1. Przetwarzanie tablic za pomocą funkcji
      2. 8.8.2. Funkcje wyższego rzędu
      3. 8.8.3. Częściowe stosowanie funkcji
      4. 8.8.4. Memoizacja
    9. 8.9. Podsumowanie
  11. Rozdział 9. Klasy
    1. 9.1. Klasy i prototypy
    2. 9.2. Klasy i konstruktory
      1. 9.2.1. Konstruktory, tożsamość klas i operator instanceof
      2. 9.2.2. Właściwość constructor
    3. 9.3. Słowo kluczowe class
      1. 9.3.1. Metody statyczne
      2. 9.3.2. Gettery, settery i inne rodzaje metod
      3. 9.3.3. Pola publiczne, prywatne i statyczne
      4. 9.3.4. Przykład: klasa reprezentująca liczby zespolone
    4. 9.4. Dodawanie metod do istniejących klas
    5. 9.5. Podklasy
      1. 9.5.1. Podklasy i prototypy
      2. 9.5.2. Tworzenie podklas za pomocą słów extends i super
      3. 9.5.3. Delegowanie zamiast dziedziczenia
      4. 9.5.4. Hierarchie klas i klasy abstrakcyjne
    6. 9.6. Podsumowanie
  12. Rozdział 10. Moduły
    1. 10.1. Tworzenie modułów za pomocą klas, obiektów i domknięć
      1. 10.1.1. Automatyzacja modułowości opartej na domknięciach
    2. 10.2. Moduły w środowisku Node
      1. 10.2.1. Eksport symboli w środowisku Node
      2. 10.2.2. Import symboli w środowisku Node
      3. 10.2.3. Moduły Node w przeglądarkach
    3. 10.3. Moduły w języku ES6
      1. 10.3.1. Eksport symboli w języku ES6
      2. 10.3.2. Import symboli w języku ES6
      3. 10.3.3. Importowanie i eksportowanie ze zmianą nazw
      4. 10.3.4. Ponowny eksport
      5. 10.3.5. Moduły JavaScript w aplikacjach internetowych
      6. 10.3.6. Dynamiczny import za pomocą funkcji import()
      7. 10.3.7. Właściwość import.meta.url
    4. 10.4. Podsumowanie
  13. Rozdział 11. Standardowa biblioteka JavaScript
    1. 11.1. Zbiory i mapy
      1. 11.1.1. Klasa Set
      2. 11.1.2. Klasa Map
      3. 11.1.3. Klasy WeakMap i WeakSet
    2. 11.2. Typowane tablice i dane binarne
      1. 11.2.1. Typy elementów tablicy typowanej
      2. 11.2.2. Tworzenie tablic typowanych
      3. 11.2.3. Korzystanie z tablic typowanych
      4. 11.2.4. Metody i właściwości tablicy typowanej
      5. 11.2.5. Klasa DataView i kolejność bajtów
    3. 11.3. Wyszukiwanie wzorców i wyrażenia regularne
      1. 11.3.1. Definiowanie wyrażeń regularnych
        1. Znaki literalne
        2. Klasy znaków
        3. Powtarzanie sekwencji
        4. Powtórzenia niezachłanne
        5. Alternatywy, grupy i odwołania
        6. Określanie pozycji dopasowania
        7. Flagi
      2. 11.3.2. Metody dopasowujące klasy String
        1. Metoda search()
        2. Metoda replace()
        3. Metoda match()
        4. Metoda matchAll()
        5. Metoda split()
      3. 11.3.3. Klasa RegExp
        1. Właściwości obiektu RegExp
        2. Metoda test()
        3. Metoda exec()
    4. 11.4. Daty i czas
      1. 11.4.1. Znaczniki czasu
      2. 11.4.2. Operacje na datach
      3. 11.4.3. Formatowanie dat i analizowanie ciągów znaków
    5. 11.5. Klasy błędów
    6. 11.6. Format JSON, serializacja i analiza składni
      1. 11.6.1. Dostosowywanie formatu JSON
    7. 11.7. Internacjonalizacja aplikacji
      1. 11.7.1. Formatowanie liczb
      2. 11.7.2. Formatowanie daty i czasu
      3. 11.7.3. Porównywanie ciągów znaków
    8. 11.8. Interfejs API konsoli
      1. 11.8.1. Formatowanie danych w konsoli
    9. 11.9. Interfejs API klasy URL
      1. 11.9.1. Starsze funkcje URL
    10. 11.10. Czasomierze
    11. 11.11. Podsumowanie
  14. Rozdział 12. Iteratory i generatory
    1. 12.1. Jak działają iteratory?
    2. 12.2. Implementowanie obiektów iterowalnych
      1. 12.2.1. „Zamknięcie” iteratora: metoda return()
    3. 12.3. Generatory
      1. 12.3.1. Przykłady generatorów
      2. 12.3.2. Instrukcja yield* i generatory rekurencyjne
    4. 12.4. Zaawansowane funkcjonalności generatorów
      1. 12.4.1. Wartość zwracana przez funkcję generatora
      2. 12.4.2. Wartość wyrażenia yield
      3. 12.4.3. Metody return() i throw() generatora
      4. 12.4.4. Końcowe uwagi dotyczące generatorów
    5. 12.5. Podsumowanie
  15. Rozdział 13. Asynchroniczność w języku JavaScript
    1. 13.1. Programowanie asynchroniczne i funkcje zwrotne
      1. 13.1.1. Czasomierze
      2. 13.1.2. Zdarzenia
      3. 13.1.3. Zdarzenia sieciowe
      4. 13.1.4. Funkcje zwrotne i zdarzenia w środowisku Node
    2. 13.2. Promesy
      1. 13.2.1. Korzystanie z promes
        1. Obsługa błędów za pomocą promes
      2. 13.2.2. Łańcuch promes
      3. 13.2.3. Determinowanie promes
      4. 13.2.4. Więcej o promesach i błędach
        1. Metody catch() i finally()
      5. 13.2.5. Promesy równoległe
      6. 13.2.6. Tworzenie promes
        1. Promesy oparte na innych promesach
        2. Promesy w operacjach synchronicznych
        3. Tworzenie promes od podstaw
      7. 13.2.7. Promesy sekwencyjne
    3. 13.3. Słowa kluczowe async i await
      1. 13.3.1. Słowo kluczowe await
      2. 13.3.2. Funkcje asynchroniczne
      3. 13.3.3. Oczekiwanie na kilka promes
      4. 13.3.4. Szczegóły implementacji
    4. 13.4. Iteracje asynchroniczne
      1. 13.4.1. Pętla for/await
      2. 13.4.2. Iteratory asynchroniczne
      3. 13.4.3. Generatory asynchroniczne
      4. 13.4.4. Implementacja iteratora asynchronicznego
    5. 13.5. Podsumowanie
  16. Rozdział 14. Metaprogramowanie
    1. 14.1. Atrybuty właściwości
    2. 14.2. Rozszerzalność obiektów
    3. 14.3. Atrybut prototype
    4. 14.4. Popularne symbole
      1. 14.4.1. Symbol.iterator i Symbol.asyncIterator
      2. 14.4.2. Symbol.hasInstance
      3. 14.4.3. Symbol.toStringTag
      4. 14.4.4. Symbol.species
      5. 14.4.5. Symbol.isConcatSpreadable
      6. 14.4.6. Symbole dopasowujące wzorce
      7. 14.4.7. Symbol.toPrimitive
      8. 14.4.8. Symbol.unscopables
    5. 14.5. Znaczniki szablonowe
    6. 14.6. Obiekt Reflect
    7. 14.7. Klasa Proxy
      1. 14.7.1. Obowiązujące zasady a obiekty pośredniczące
    8. 14.8. Podsumowanie
  17. Rozdział 15. JavaScript w przeglądarkach
    1. 15.1. Podstawy programowania stron WWW
      1. 15.1.1. Kod JavaScript w znacznikach HTML <script>
        1. Moduły
        2. Typ skryptu
        3. Asynchroniczne i odroczone uruchamianie skryptów
        4. Ładowanie skryptów na żądanie
      2. 15.1.2. Model DOM
      3. 15.1.3. Obiekt globalny w przeglądarce
      4. 15.1.4. Wspólna przestrzeń nazw
      5. 15.1.5. Uruchamianie programów JavaScript
        1. Wątkowy model kodu klienckiego
        2. Kolejność działań w kodzie klienckim
      6. 15.1.6. Wejście i wyjście programu
      7. 15.1.7. Błędy
      8. 15.1.8. Model bezpieczeństwa
        1. Czego skrypt JavaScript nie jest w stanie zrobić?
        2. Reguła tego samego pochodzenia
        3. Skrypty międzydomenowe
    2. 15.2. Zdarzenia
      1. 15.2.1. Kategorie zdarzeń
      2. 15.2.2. Rejestrowanie procedury obsługi zdarzeń
        1. Rejestracja poprzez ustawienie właściwości obiektu
        2. Rejestracja poprzez ustawienie atrybutu
        3. Metoda addEventListener()
      3. 15.2.3. Wywołanie procedury obsługi zdarzenia
        1. Argument procedury obsługi zdarzenia
        2. Kontekst wywołania procedury
        3. Wynik procedury obsługi zdarzenia
        4. Kolejność wywołań
      4. 15.2.4. Propagacja zdarzeń
      5. 15.2.5. Anulowanie zdarzenia
      6. 15.2.6. Zgłaszanie własnych zdarzeń
    3. 15.3. Przetwarzanie dokumentów
      1. 15.3.1. Wybieranie elementów dokumentu
        1. Wybieranie elementów za pomocą selektorów CSS
        2. Inne metody wybierające elementy
        3. Wstępnie wybrane elementy
      2. 15.3.2. Struktura dokumentu i jej przeglądanie
        1. Dokument jako drzewiasta struktura węzłów
      3. 15.3.3. Atrybuty
        1. Atrybuty HTML jako właściwości elementu
        2. Atrybut class
        3. Atrybuty zbioru danych
      4. 15.3.4. Zawartość elementu
        1. Zawartość w formacie HTML
        2. Zawartość w formacie zwykłego tekstu
      5. 15.3.5. Tworzenie, wstawianie i usuwanie węzłów
      6. 15.3.6. Przykład: tworzenie spisu treści
    4. 15.4. Przetwarzanie arkusza stylów
      1. 15.4.1. Klasy stylów
      2. 15.4.2. Style śródwierszowe
      3. 15.4.3. Styl wyliczony
      4. 15.4.4. Przetwarzanie arkuszy stylów
      5. 15.4.5. Animowanie stylów i obsługa zdarzeń
    5. 15.5. Geometria i przewijanie dokumentu
      1. 15.5.1. Współrzędne dokumentu i współrzędne widoku
      2. 15.5.2. Odczytywanie geometrii elementu
      3. 15.5.3. Określenie elementu w danym punkcie
      4. 15.5.4. Przewijanie dokumentu
      5. 15.5.5. Wielkości i przesunięcia widoku i jego zawartości
    6. 15.6. Komponenty WWW
      1. 15.6.1. Stosowanie komponentów WWW
      2. 15.6.2. Szablony HTML
      3. 15.6.3. Elementy niestandardowe
      4. 15.6.4. Zacieniony model DOM
        1. Enkapsulacja zacienionego modelu DOM
        2. Zacienione sloty i oświetlone elementy potomne
        3. Interfejs API zacienionego modelu DOM
      5. 15.6.5. Przykład: komponent WWW <search-box>
    7. 15.7. SVG: skalowalna grafika wektorowa
      1. 15.7.1. Obrazy SVG w dokumencie HTML
      2. 15.7.2. Przetwarzanie obrazów SVG
      3. 15.7.3. Tworzenie obrazów SVG za pomocą JavaScriptu
    8. 15.8. Grafika w znaczniku <canvas>
      1. 15.8.1. Ścieżki i wielokąty
      2. 15.8.2. Wymiary i współrzędne kanwy
      3. 15.8.3. Atrybuty graficzne
        1. Style linii
        2. Kolory, desenie i gradienty
        3. Style tekstu
        4. Cienie
        5. Przezroczystość i kompozycja koloru
        6. Zapisywanie i odtwarzanie stanu grafiki
      4. 15.8.4. Operacje graficzne na kanwie
        1. Prostokąty
        2. Krzywe
        3. Tekst
        4. Obrazy
      5. 15.8.5. Transformacje układu współrzędnych
        1. Matematyczny opis transformacji
        2. Przykład transformacji
      6. 15.8.6. Przycinanie
      7. 15.8.7. Operacje na pikselach
    9. 15.9. Klasa Audio
      1. 15.9.1. Konstruktor Audio()
      2. 15.9.2. Interfejs WebAudio API
    10. 15.10. Lokalizacja, nawigacja i historia
      1. 15.10.1. Ładowanie nowego dokumentu
      2. 15.10.2. Historia przeglądarki
      3. 15.10.3. Zarządzanie historią za pomocą zdarzeń hashchange
      4. 15.10.4. Zarządzanie historią za pomocą metody pushState()
    11. 15.11. Sieć
      1. 15.11.1. Funkcja fetch()
        1. Kody stanu HTTP, nagłówki odpowiedzi i błędy sieciowe
        2. Ustawianie parametrów zapytania
        3. Ustawianie nagłówków zapytania
        4. Analiza treści odpowiedzi
        5. Strumieniowanie treści odpowiedzi
        6. Określanie rodzaju i treści zapytania
        7. Wysyłanie plików za pomocą funkcji fetch()
        8. Zapytania międzydomenowe
        9. Przerwanie zapytania
        10. Opcje zapytań
      2. 15.11.2. Protokół SSE
      3. 15.11.3. Protokół WebSocket
        1. Definiowanie, nawiązywanie i zamykanie połączenia WebSocket
        2. Wysyłanie komunikatów
        3. Odbieranie komunikatów
        4. Negocjacja protokołu
    12. 15.12. Magazynowanie danych
      1. 15.12.1. Właściwości localStorage i sessionStorage
        1. Czas życia i zakres danych
        2. Zdarzenia pamięci
      2. 15.12.2. Ciasteczka
        1. Odczytywanie ciasteczek
        2. Atrybuty ciasteczek: czas życia i zakres widoczności
        3. Zapisywanie ciasteczek
      3. 15.12.3. Baza IndexedDB
    13. 15.13. Wątki robocze i komunikaty
      1. 15.13.1. Obiekty wątków roboczych
      2. 15.13.2. Globalny obiekt dla wątków
      3. 15.13.3. Importowanie kodu do wątku roboczego
      4. 15.13.4. Model działania wątków
        1. Błędy w wątkach
      5. 15.13.5. Metoda postMessage(), klasy MessagePorts i MessageChannels
      6. 15.13.6. Przesyłanie komunikatów między domenami za pomocą metody postMessage()
    14. 15.14. Przykład: zbiór Mandelbrota
    15. 15.15. Podsumowanie i dalsza lektura
      1. 15.15.1. HTML i CSS
      2. 15.15.2. Wydajność
      3. 15.15.3. Bezpieczeństwo
      4. 15.15.4. Format WebAssembly
      5. 15.15.5. Dodatkowe funkcjonalności obiektów Document i Window
      6. 15.15.6. Zdarzenia
      7. 15.15.7. Aplikacje PWA i wątki usługowe
      8. 15.15.8. Obsługa urządzeń przenośnych
      9. 15.15.9. Przetwarzanie danych binarnych
      10. 15.15.10. Obsługa mediów
      11. 15.15.11. Kryptografia
  18. Rozdział 16. Serwery w środowisku Node
    1. 16.1. Podstawy programowania w środowisku Node
      1. 16.1.1. Konsola
      2. 16.1.2. Argumenty poleceń i zmienne środowiskowe
      3. 16.1.3. Cykl życia programu
      4. 16.1.4. Moduły
      5. 16.1.5. Node Package Manager
    2. 16.2. Domyślna asynchroniczność
    3. 16.3. Bufory
    4. 16.4. Zdarzenia i klasa EventEmitter
    5. 16.5. Strumienie
      1. 16.5.1. Potoki
      2. 16.5.2. Iteracje asynchroniczne
      3. 16.5.3. Zapisywanie danych w strumieniu i obsługa nacisku zwrotnego
      4. 16.5.4. Odczytywanie danych ze strumienia za pomocą zdarzeń
        1. Tryb płynny
        2. Tryb wstrzymywany
    6. 16.6. Procesy, procesory i szczegóły systemu operacyjnego
    7. 16.7. Operacje na plikach
      1. 16.7.1. Ścieżki, deskryptory i klasa FileHandle
      2. 16.7.2. Odczytywanie plików
      3. 16.7.3. Zapisywanie plików
      4. 16.7.4. Operacje na plikach
      5. 16.7.5. Metadane pliku
      6. 16.7.6. Operacje na katalogach
    8. 16.8. Klienty i serwery HTTP
    9. 16.9. Klienty i serwery inne niż HTTP
    10. 16.10. Procesy potomne
      1. 16.10.1. Funkcje execSync() i execFileSync()
      2. 16.10.2. Funkcje exec() i execFile()
      3. 16.10.3. Funkcja spawn()
      4. 16.10.4. Funkcja fork()
    11. 16.11. Wątki robocze
      1. 16.11.1. Tworzenie wątków roboczych i przesyłanie komunikatów
      2. 16.11.2. Środowisko uruchomieniowe wątków roboczych
      3. 16.11.3. Kanały komunikacyjne i klasa MessagePort
      4. 16.11.4. Przenoszenie obiektów MessagePort i typowanych tablic
      5. 16.11.5. Współdzielenie typowanej tablicy przez wątki
    12. 16.12. Podsumowanie
  19. Rozdział 17. Narzędzia i rozszerzenia
    1. 17.1. Inspekcja kodu za pomocą narzędzia ESLint
    2. 17.2. Formatowanie kodu za pomocą narzędzia Prettier
    3. 17.3. Tworzenie testów jednostkowych za pomocą narzędzia Jest
    4. 17.4. Zarządzanie pakietami za pomocą narzędzia npm
    5. 17.5. Pakowanie kodu
    6. 17.6. Transpilacja kodu za pomocą narzędzia Babel
    7. 17.7. Rozszerzenie JSX: znaczniki w kodzie JavaScript
    8. 17.8. Sprawdzanie typów danych za pomocą rozszerzenia Flow
      1. 17.8.1. Instalacja i korzystanie z rozszerzenia Flow
      2. 17.8.2. Stosowanie adnotacji typów
      3. 17.8.3. Klasy
      4. 17.8.4. Obiekty
      5. 17.8.5. Aliasy typów
      6. 17.8.6. Tablice
      7. 17.8.7. Inne parametryzowane typy
      8. 17.8.8. Typy danych przeznaczonych tylko do odczytu
      9. 17.8.9. Funkcje
      10. 17.8.10. Unie
      11. 17.8.11. Typy wyliczeniowe i unie dyskryminowane
    9. 17.9. Podsumowanie
    10. O autorze
    11. Kolofon

Product information

  • Title: JavaScript
  • Author(s): David Flanagan
  • Release date: March 2021
  • Publisher(s): Helion
  • ISBN: 9788328373082