Tajniki jezyka JavaScript ECMAScript 6 i dalej.pdf

(788 KB) Pobierz
Tytuł oryginału: You Don't Know JS: ES6 & Beyond
Tłumaczenie: Piotr Rajca
ISBN: 978-83-283-2311-7
© 2016 Helion SA
Authorized Polish translation of the English edition You Don't Know JS: ES6 & Beyond ISBN
9781491904244 © 2016 Getify Solutions, Inc.
This translation is published and sold by permission of O’Reilly Media, Inc.,
which owns or controls all rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/tajnjs
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Przedmowa .......................................................................................................................5
Wstęp ...............................................................................................................................7
1. ES? Teraźniejszość i przyszłość ..........................................................................................11
Wersje języka
Transpilacja — transformacja kodu
Biblioteki typu shim i polyfill
Podsumowanie
12
13
14
15
2. Składnia ..........................................................................................................................17
Deklaracje zakresu bloku
Rozproszenie (reszta)
Domyślne wartości parametrów
Destrukturyzacja
Rozszerzenia literałów obiektowych
Literały szablonów
Funkcje typu arrow function
Pętle for .. of
Wyrażenia regularne
Rozszerzenia literałów liczbowych
Unicode
Symbole
Podsumowanie
17
24
26
30
44
51
57
62
65
73
74
79
84
3. Organizacja .....................................................................................................................85
Iteratory
Generatory
Moduły
Klasy
Podsumowanie
85
95
110
126
136
3
Kup książkę
Poleć książkę
4. Asynchroniczne sterowanie przepływem ........................................................................137
Obietnice
Generatory i obietnice
Podsumowanie
137
143
146
5. Kolekcje .........................................................................................................................147
Tablice określonego typu
Mapy
Mapy typu WeakMap
Zbiory
Zbiory typu WeakSet
Podsumowanie
147
152
156
157
158
159
6. Modyfikacje API .............................................................................................................161
Array
Object
Math
Number
String
Podsumowanie
161
170
173
175
178
179
7. Metaprogramowanie .....................................................................................................181
Nazwy funkcji
Dobrze znane symbole
Obiekty pośredniczące — Proxy
Interfejs API obiektu Reflect
Testowanie możliwości
Optymalizacja TCO
Podsumowanie
181
185
190
202
206
208
215
8. Dalszy rozwój języka po ES6 ...........................................................................................217
Funkcje asynchroniczne
Object.observe(..)
Operator potęgi
Właściwości obiektów i operator ...
Array#includes(..)
SIMD
WebAssembly (WASM)
Podsumowanie
218
221
224
224
225
226
227
229
A Podziękowania ..............................................................................................................231
Skorowidz .....................................................................................................................235
4
Spis treści
Poleć książkę
Kup książkę
ROZDZIAŁ 5.
Kolekcje
Kolekcje oraz dostęp do danych o określonej strukturze to kluczowe elementy niemal wszystkich pro-
gramów pisanych w języku JavaScript. Od samego początku istnienia języka aż do chwili obecnej
podstawowymi mechanizmami używanymi do tworzenia struktur danych są tablice i obiekty. Oczywi-
ście, powstawały także biblioteki, które korzystając z tablic i obiektów, implementowały struktury
danych wyższego poziomu.
Jednak w ES6 niektóre najbardziej przydatne (i zoptymalizowane pod względem wydajności działa-
nia!) spośród tych abstrakcji danych zostały dodane jako macierzyste elementy języka.
Zaczniemy od przedstawienia
tablic określonego typu
(ang.
TypedArrays),
rozwiązania wprowadzo-
nego kilka lat temu wraz z udostępnieniem wersji ES5, lecz zestandaryzowanego wyłącznie jako
dodatek do WebGL, a nie do samego języka JavaScript. W przypadku ES6 tablice określonego typu zo-
stały dodane bezpośrednio do specyfikacji języka, co nadało im najwyższy status.
Mapy przypominają nieco obiekty (pary klucz-wartość), jednak w ich przypadku kluczem może być
nie tylko łańcuch znaków, lecz dowolna wartość — nawet inny obiekt lub mapa! Zbiory są podobne
do tablic (list wartości), ale umieszczane w nich wartości są unikalne; w przypadku próby dodania
duplikatu zostanie on pominięty. Istnieją także „słabe” (pod względem odzyskiwania i oczyszczania
pamięci) odpowiedniki tych dwóch struktur danych: WeakMap oraz WeakSet.
Tablice określonego typu
Zgodnie z informacjami podanymi w książce
Tajniki języka JavaScript. Typy i gramatyka,
należącej do
tej serii wydawniczej, język JavaScript posiada zestaw wbudowanych typów danych, takich jak
number
oraz
string
. Kuszące byłoby przypuszczenie, że termin „tablice określonego typu” oznacza tablicę
wartości pewnego konkretnego typu, na przykład: tablicę zawierającą wyłącznie łańcuchy znaków.
Jednak w przypadku tablic określonego typu chodzi raczej o zapewnienie strukturalnego dostępu do
danych binarnych przy wykorzystaniu składni charakterystycznej dla tablic (dostępu z użyciem
indeksów itd.). Słowo „typ” w nazwie tego mechanizmu odnosi się raczej do „widoku” prezentującego
zbiory bitów, stanowiącego w zasadzie odwzorowanie określające, czy bity powinny być traktowane
jako tablica 8-bitowych liczb całkowitych ze znakiem, czy też jako 16-bitowe liczby całkowite ze
znakiem itd.
147
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin