wprowadzenie

ECMAScript 6, znany również jako ECMAScript 2015, jest najnowszą wersją standardu ECMAScript. ES6 jest znaczącą aktualizacją języka i pierwszą aktualizacją języka od czasu standaryzacji ES5 w 2009 roku. Implementacja tych funkcji w głównych silnikach JavaScript jest obecnie w toku.

pełna specyfikacja języka ECMAScript 6 znajduje się w standardzie ES6.,

ES6 zawiera następujące nowe funkcje:

  • strzałki
  • Klasy
  • rozszerzone literały obiektów
  • ciągi szablonów
  • destrukcja
  • default + rest + spread
  • let + const
  • Iteratory + for..,
  • Generatory
  • unicode
  • Moduły
  • Ładowarki modułów
  • map + set + weakmap + weakset
  • proxy
  • symbole
  • wbudowane podklasowalne
  • obietnice
  • math + number + string + array + object API
  • literały binarne i ósemkoweli
  • reflect API
  • Tail calls

ECMAScript 6 features

Arrows

arrows are a function shorthand using the =>syntax. Są one składniowo podobne do pokrewnych funkcji w C#, Java 8 i CoffeeScript., Obsługują zarówno bloki instrukcji, jak i ciała wyrażeń, które zwracają wartość wyrażenia. W przeciwieństwie do funkcji, strzałki mają ten sam kod leksykalny this, co ich otaczający kod.

Więcej informacji: MDN Arrow Functions

Classes

ES6 classes are a simple sugar over the prototype-based oo pattern. Posiadanie jednej wygodnej formy deklaratywnej sprawia, że wzorce klas są łatwiejsze w użyciu i zachęca do interoperacyjności. Klasy obsługują dziedziczenie oparte na prototypach, super wywołania, instancje oraz statyczne metody i konstruktory.,

Więcej informacji: klasy MDN

Rozszerzone literały obiektów

literały obiektów są rozszerzone, aby wspierać ustawianie prototypu przy budowie, skróty dlafoo: foo przypisywanie, definiowanie metod, wykonywanie super połączeń i obliczanie nazw właściwości za pomocą wyrażeń. Razem, zbliżają one również literały obiektów i deklaracje klas do siebie i pozwalają projektowi obiektowemu korzystać z niektórych z tych samych udogodnień.,

Więcej informacji: MDN Gramatyka i typy: literały obiektowe

ciągi szablonów

ciągi szablonów dostarczają cukru składniowego do konstruowania ciągów. Jest to podobne do funkcji interpolacji łańcuchów w Perlu, Pythonie i innych. Opcjonalnie można dodać znacznik, aby umożliwić dostosowanie konstrukcji łańcuchów, unikając ataków iniekcyjnych lub konstruowania struktur danych wyższego poziomu z zawartości łańcuchów.

Więcej informacji: ciągi szablonów MDN

destrukcja

destrukcja umożliwia wiązanie za pomocą dopasowania wzorców, z obsługą dopasowywania tablic i obiektów., Destrukcja jest miękka, podobna do standardowego wyszukiwania obiektów foo, generując undefined wartości, gdy nie zostały znalezione.

Więcej informacji: przypisanie destrukcji MDN

Default + Rest + Spread

Callee-obliczane domyślne wartości parametrów. Zamienia tablicę w kolejne argumenty w wywołaniu funkcji. Bind końcowe parametry do tablicy. Rest zastępuje potrzebę arguments I rozwiązuje typowe przypadki bardziej bezpośrednio.,

function f(x, y=12) { // y is 12 if not passed (or passed as undefined) return x + y;}f(3) == 15
function f(x, ...y) { // y is an Array return x * y.length;}f(3, "hello", true) == 6
function f(x, y, z) { return x + y + z;}// Pass each elem of array as argumentf(...) == 6

More MDN info: Default parameters, Rest parameters, Spread Operator

Let + Const

Block-scoped binding constructs. let is the new var. const is single-assignment. Static restrictions prevent use before assignment.

function f() { { let x; { // okay, block scoped name const x = "sneaky"; // error, const x = "foo"; } // error, already declared in block let x = "inner"; }}

More MDN info: let statement, const statement

Iterators + For..,Z

Obiekty iteratora umożliwiają iterację niestandardową, jak CLR IEnumerable lub Java Iterable. Generalizuj for..indo niestandardowej iteracji opartej na iteratorze za pomocą for..of. Nie wymaga realizacji tablicy, umożliwiając leniwe wzorce projektowe, takie jak LINQ.

iteracja jest oparta na interfejsach typu kaczka (tylko dla ekspozycji używa składni typu TypeScript):

Więcej informacji: MDN for…z

Generatory

Generatory upraszczają tworzenie iteratorów za pomocą function*I yield., Funkcja zadeklarowana jako funkcja * zwraca instancję generatora. Generatory są podtypami iteratorów, które zawierają dodatkowe next I throw. Te umożliwiają przepływ wartości z powrotem do generatora, więc yield jest formą wyrażenia, która zwraca wartość (lub rzuca).

Uwaga: Może być również używany do włączania programowania asynchronicznego typu 'wait', patrz także propozycja ES7 await.,

interfejs generatora jest (przy użyciu składni typu TypeScript tylko dla ekspozycji):

interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}

Więcej informacji: protokoły iteracji MDN

Unicode

niełamliwe dodatki do obsługi pełnego Unicode, w tym nowy literal Unicode w ciągach i nowe wyrażenia regularneu Tryb obsługi punktów kodu, a także nowe API do przetwarzania ciągów na poziomie 21-bitowych punktów kodu. Dodatki te wspierają budowanie globalnych aplikacji w JavaScript.

Więcej informacji: MDN RegExp.prototyp.,unicode

Moduły

obsługa modułów na poziomie języka do definiowania komponentów. Koduje wzorce z popularnych loaderów modułów JavaScript (AMD, CommonJS). Zachowanie środowiska pracy zdefiniowane przez domyślny program ładujący zdefiniowany przez hosta. Domyślnie model asynchroniczny – żaden kod nie jest wykonywany, dopóki żądane Moduły nie będą dostępne i przetworzone.,v>

niektóre dodatkowe funkcje obejmują export default I export *:

// lib/mathplusplus.jsexport * from "lib/math";export var e = 2.71828182846;export default function(x) { return Math.log(x);}
// app.jsimport ln, {pi, e} from "lib/mathplusplus";alert("2π = " + ln(e)*pi*2);

Więcej MDN info: Instrukcja importu, Instrukcja eksportu

Ładowarki modułów

obsługa ładowarek modułów:

  • dynamiczne ładowanie
  • izolacja stanu
  • izolacja globalnej przestrzeni nazw
  • haki kompilacji
  • wirtualizacja zagnieżdżona

domyślna ładowarka modułów może być skonfigurowana, a nowe ładowarki mogą być konstruowane do oceny i ładowania kodu w izolowanych lub ograniczonych kontekstach.,

Map + Set + WeakMap + WeakSet

wydajne struktury danych dla popularnych algorytmów. WeakMaps zapewnia nieszczelne tabele boczne z kluczem obiektowym.

Więcej MDN info: Map, Set, WeakMap, WeakSet

Proxy

proxy umożliwiają tworzenie obiektów z pełnym zakresem zachowań dostępnych dla obiektów hosta. Może być stosowany do przechwytywania, wirtualizacji obiektów, logowania/profilowania, itp.

dla wszystkich meta-operacji na poziomie runtime dostępne są pułapki:

Więcej informacji: MDN Proxy

Symbole

Symbole umożliwiają kontrolę dostępu dla stanu obiektu., Symbole pozwalają na modyfikowanie właściwości przez string(jak w ES5) lub symbol. Symbole to nowy, prymitywny Typ. Opcjonalnydescription parametr używany w debugowaniu – ale nie jest częścią tożsamości. Symbole są unikalne (jak gensym), ale nie prywatne, ponieważ są eksponowane za pomocą funkcji odbicia, takich jak Object.getOwnPropertySymbols.

Więcej informacji: symbol MDN

wbudowane Podklasowalne

w ES6, wbudowane, takie jakArray,Date I DOMElements mogą być podklasowane.,

budowa obiektu dla funkcji o nazwie Ctor używa teraz dwóch faz (obie praktycznie wysłane):

  • wywołaj Ctor aby przydzielić obiekt, instalując dowolne specjalne zachowanie
  • wywołaj konstruktor na nowej instancji, aby zainicjować

znany @@create symbol jest dostępny poprzez Symbol.create. Wbudowane teraz ujawniają swoje@@create jawnie.,

Math + Number + String + Array + Object API

wiele nowych bibliotek, w tym podstawowe biblioteki Matematyczne, pomocniki konwersji tablic, pomocniki łańcuchów i obiekt.przypisanie do kopiowania.

Więcej informacji MDN: Liczba, Matematyka, tablica.od, Array.of, Array.prototyp.copyWithin, Object.przypisanie

literały binarne i ósemkowe

dwie nowe literały numeryczne są dodawane dla binarnych (b) I ósemkowych (o).

0b111110111 === 503 // true0o767 === 503 // true

Promises

Promises to biblioteka do programowania asynchronicznego., Obietnice są pierwszorzędną reprezentacją wartości, która może być udostępniona w przyszłości. Obietnice są używane w wielu istniejących bibliotekach JavaScript.

Więcej informacji: MDN Promise

Reflect API

Full reflect API pokazujące meta-operacje na obiektach na poziomie runtime. W rzeczywistości jest to odwrotność API Proxy i umożliwia wykonywanie wywołań odpowiadających tym samym meta-operacjom, co pułapki proxy. Szczególnie przydatne przy implementacji proxy.,

// No sample yet

Więcej informacji: MDN Reflect

wywołania ogonowe

wywołania w pozycji ogonowej są gwarantowane, że nie będą rosły w sposób niezwojony. Sprawia, że algorytmy rekurencyjne są bezpieczne w obliczu nieograniczonych wejść.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *