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* ésyieldhaszná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 symbolkarakter 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 Elements 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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük