Bevezetés
ECMAScript 6, más néven ECMAScript 2015, A legújabb változata az ECMAScript szabvány. Az ES6 a nyelv jelentős frissítése, az ES5 szabványosítása óta az első frissítés a nyelvre 2009-ben. Ezeknek a funkcióknak a megvalósítása a főbb JavaScript motorokban már folyamatban van.
Lásd az ES6 szabványt az ECMAScript 6 nyelv teljes specifikációjához.,
ES6 a következő új funkciókat tartalmazza:
- nyilak
- osztályok
- továbbfejlesztett objektum literals
- sablon karakterláncok
- destructuring
- alapértelmezett + rest + spread
- let + const
- iterators + for..,a
- generátorok
- unicode
- modulok
- – modul rakodó
- térkép + set + weakmap + weakset
- proxy
- szimbólumok
- subclassable beépített modulok
- ígéretek
- matek + szám + string + tömb + tárgy APIs
- bináris, oktális, illetve közvetlen használata erősen kerülendő
- tükrözik api
- farok hívásokat
ECMAScript 6 Jellemzők
Nyilak
Nyilak vagy egy funkció kifejezés használata a =>
szintaxis. Ezek szintaktikailag hasonlóak a kapcsolódó funkció C#, Java 8 és CoffeeScript., Támogatják mind a kijelentési blokk testeket, mind a kifejezési testeket, amelyek visszaadják a kifejezés értékét. A függvényekkel ellentétben a nyilak ugyanazokkal a lexikális this
, mint a környező kód.
További információ: MDN Arrow Functions
Classes
ES6 classes are a simple sugar over the prototype-based OO pattern. Az egyetlen kényelmes deklaratív forma megkönnyíti az osztályminták használatát, és ösztönzi az interoperabilitást. Az osztályok támogatják a prototípus alapú öröklést, a szuperhívásokat, a példányokat és a statikus módszereket, valamint a konstruktorokat.,
További információ: MDN osztályok
Enhanced Object Literals
Object literals are extended to support setting the prototype at construction, shorthand for foo: foo
feladatok, meghatározó módszerek, így szuper hívások, and computing property names with expressions. Együtt ezek is, hogy az objektum közvetlen használata erősen kerülendő, illetve osztály nyilatkozatok közelebb, hadd objektum-alapú tervezés előnyeit néhány azonos külön.,
további információk: MDN Grammar and types: Object literals
Template Strings
Template strings provide syntactic sugar for constructing strings. Ez hasonló a string interpolációs funkciókhoz Perl, Python stb. Opcionálisan egy címke is hozzáadható, amely lehetővé teszi a karakterlánc felépítésének testreszabását, elkerülve az injektálási támadásokat vagy magasabb szintű adatstruktúrákat a karakterlánc tartalmából.
További információ: MDN sablon karakterláncok
Destructuring
Destructuring lehetővé teszi kötés segítségével minta megfelelő, támogatja a megfelelő tömbök és objektumok., Destructuring nem-puha, hasonló a standard objektum lookup foo
, termelő undefined
értékeket, ha nem található.
További információ: MDN Destructuring assigment
Default + Rest + Spread
Callee-értékelt alapértelmezett paraméterértékek. Kapcsolja be a tömb egymást követő argumentumok függvényhívás. Kösse össze a záró paramétereket egy tömbbel. Rest helyettesíti a arguments
szükségességét, és közvetlenebbül kezeli a gyakori eseteket.,
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..,A
Iterátor objektumok lehetővé teszik az egyéni iteráció, mint CLR IEnumerable vagy Java Iterable. Általánosítani for..in
egyéni iterátor alapú iteráció for..of
. Nem kell megvalósítani egy tömb, amely lehetővé teszi a lusta tervezési minták, mint a LINQ.
Az iteráció ezen kacsa-gépelt interfészeken alapul (csak a TypeScript típusú szintaxis használatával):
További információ: MDN for…a
generátorok
generátorok egyszerűsítik az iterátorszerzést afunction*
ésyield
használatával., A függvény * – ként deklarált függvény egy Generátorpéldányt ad vissza. A generátorok az iterátorok altípusai, amelyek további next
és throw
. Ezek lehetővé teszik az értékek visszaáramlását a generátorba, így a yield
egy kifejezésforma, amely értéket ad vissza (vagy dob).
megjegyzés: a “várakozás” -szerű async programozás engedélyezéséhez is használható, lásd még ES7 await
javaslat.,
A generátor felület (a Géppel típusú szintaktikai a kiállítás csak):
interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}
Több info: MDN Iterációs protokollok
Unicode
Non-breaking kiegészítések, hogy teljes mértékben támogatják a Unicode-ot, beleértve az új Unicode szó szerinti formában, a vonósok, a new RegExp u
módban kezelni kód pontok, valamint az új Api-k folyamat húrok a 21bit kód pontot szinten. Ezek a kiegészítések támogatják a globális alkalmazások építését a JavaScriptben.
További információ: MDN RegExp.prototípus.,unicode
modulok
nyelvi szintű támogatás modulok komponens meghatározása. Kódolja minták népszerű JavaScript modul rakodógépek (AMD, CommonJS). A gazdagép által definiált alapértelmezett betöltő által meghatározott futásidejű viselkedés. Implicit async model-nincs kód végrehajtja, amíg a kért modulok állnak rendelkezésre, illetve feldolgozott.,v>
további jellemzők export default
vagy 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);
Több MDN info: behozatali nyilatkozatot, kiviteli nyilatkozatot
Modul Rakodó
Modul rakodó támogatás:
- Dinamikus terhelés
- Állami elszigeteltség
- a Globális névtér elszigeteltség
- Összeállítás horgok
- Beágyazott virtualizációs
Az alapértelmezett module loader lehet beállítani, új rakodó lehet megállapítani, hogy értékelje, hogy a teher kódot elszigetelt vagy korlátozott kontextusban.,
Map + Set + WeakMap + WeakSet
hatékony adatstruktúrák közös algoritmusok. A WeakMaps szivárgásmentes objektum-kulcs oldalsó táblákat biztosít.
Több MDN info: térkép, Set, WeakMap, WeakSet
Proxies
Proxies lehetővé teszik objektumok létrehozását a teljes körű viselkedés áll rendelkezésre, hogy a fogadó objektumok. Használható lehallgatáshoz, objektum virtualizációhoz, naplózáshoz / profilalkotáshoz stb.
az összes futásidejű meta-művelethez rendelkezésre állnak csapdák:
további információk: MDN Proxy
szimbólumok
szimbólumok engedélyezik az objektumállapot hozzáférés-vezérlését., A szimbólumok lehetővé teszik, hogy a tulajdonságokat a string
(mint az ES5-ben) vagy a symbol
karakter adja meg. A szimbólumok egy új primitív típus. Opcionális description
a hibakeresésben használt paraméter – de nem része az identitásnak. A szimbólumok egyediek (mint például a gensym), de nem magántulajdonban vannak, mivel olyan visszaverődési funkciókkal vannak kitéve, mint például a Object.getOwnPropertySymbols
.
További információ: MDN szimbólum
Alosztályozható beépített
az ES6-ban, olyan beépített elemek, mint a Array
, Date
és DOM Element
s alosztályozható.,
Objektum építése, a függvény neve Ctor
most használ két-fázis (mindkét gyakorlatilag feladták):
- Hívás
Ctor
kiosztani a tárgy, telepítése semmilyen speciális viselkedés - meghívja a kivitelező új példány inicializálni
Az ismert @@create
szimbólum keresztül elérhető Symbol.create
. Beépített most ki a @@create
kifejezetten.,
Math + Number + String + Array + Object API
számos új könyvtári kiegészítés, beleértve a core matematikai könyvtárakat, a tömb konverziós segítőket, a String segítőket és az objektumot.hozzárendelés másoláshoz.
Több MDN info: szám, matematika, tömb.- tól, tömb.az, tömb.prototípus.copyWithin, Object.hozzárendelése
bináris és oktális Literals
két új numerikus szó formák adunk bináris (b
) és octal (o
).
0b111110111 === 503 // true0o767 === 503 // true
Az ígéretek az aszinkron programozás könyvtárai., Az ígéretek egy olyan érték első osztályú ábrázolása, amelyet a jövőben elérhetővé lehet tenni. Az ígéreteket számos meglévő JavaScript könyvtárban használják.
További információ: MDN Promise
tükrözik API
teljes reflexió API felfedve a futási szintű meta-műveletek objektumok. Ez gyakorlatilag a Proxy API inverze, lehetővé teszi a proxy csapdákkal azonos meta-műveleteknek megfelelő hívások kezdeményezését. Különösen hasznos a proxyk végrehajtásához.,
// No sample yet
További információ: MDN Reflect
Tail Calls
a farok pozícióban lévő hívások garantáltan nem növelik a verem korlátlanul. Teszi rekurzív algoritmusok biztonságos szemben határtalan bemenetek.