Johdanto
ECMAScript 6, joka tunnetaan myös nimellä ECMAScript 2015, on uusin versio ECMAScript-standardia. ES6 on merkittävä päivitys kieleen, ja ensimmäinen päivitys kieleen sen jälkeen, kun ES5 standardoitiin vuonna 2009. Näiden ominaisuuksien toteuttaminen suurissa JavaScript-moottoreissa on käynnissä nyt.
Katso ES6-standardi ECMAScript 6-kielen täydellisestä erittelystä.,
ES6 sisältää seuraavat uudet ominaisuudet:
- nuolet
- luokat
- parannettu esine literaaleja
- mallin jouset
- tuhoa
- default + lepo + leviämisen
- anna + const
- iteraattorit + varten..,ja
- generaattorit
- unicode
- moduulit
- moduuli kuormaajat
- kartta + set + weakmap + weakset
- valtakirjat
- symbolit
- subclassable takkasydämet
- lupaa
- matematiikka + numero + merkkijono + joukko + esine APIs
- binääri ja oktaali literaaleja
- heijastavat api
- tail puhelut
ECMAScript 6 Ominaisuudet
Nuolet
– Nuolet ovat funktio pika käyttäen =>
– syntaksilla. Ne muistuttavat syntaktisesti toisiinsa liittyvää ominaisuutta C#: ssä, Java 8: ssa ja CoffeeScript: ssä., Ne tukevat sekä lausumalohkoelimiä että ilmaisuelimiä, jotka palauttavat ilmaisun arvon. Funktioista poiketen nuolilla on sama lexical this
kuin niiden ympäröivällä koodilla.
lisätietoja: MDN Nuoli Toiminnot
Luokat
ES6 luokat ovat yksinkertainen sokeri yli prototyyppi-pohjainen OO malli. Yhden kätevän ilmoittavan muodon ansiosta luokkakuvioita on helpompi käyttää, ja se edistää yhteentoimivuutta. Luokat tukevat prototyyppipohjaista perintöä, superpuheluita, instanssia ja staattisia menetelmiä ja rakentajia.,
lisätietoja: MDN Luokat
Parannettu Esine Literaaleja
Object literaaleja ovat laajennettu tuki asettaminen prototyypin rakentamisen, pika foo: foo
tehtäviä, joissa määritellään menetelmiä, jolloin super puhelut, ja computing kiinteistön nimet ilmaisuja. Yhdessä nämä myös tuoda esineen literaaleja ja luokan ilmoitukset lähemmäksi toisiaan, ja anna objekti-pohjainen suunnittelu hyötyvät joitakin samoja varusteluun.,
lisätietoja: MDN Kielioppi ja tyypit: Object literaaleja
Mallin Jouset
Malli jouset tarjoavat syntaktinen sokeri rakentaa jouset. Tämä on samanlainen merkkijono interpolointi ominaisuuksia Perl, Python ja enemmän. Valinnaisesti, tag voidaan lisätä, jotta merkkijono rakenne voidaan räätälöidä, välttää injektio hyökkäyksiä tai rakentaa korkeamman tason tietorakenteita merkkijonon sisällöstä.
lisätietoja: MDN-Mallin Jouset,
Tuhoa
Tuhoa avulla sitovia käyttämällä kaavoja, tuki matching taulukot ja esineitä., Tuhoa on fail-pehmeä, samanlainen vakio-objektien haku foo
tuottavat undefined
arvot, kun ei löytynyt.
lisätietoja: MDN Tuhoa tehtävän
Default + Lepo + Levitä
Callee-arvioidaan parametrin oletusarvot. Käännä joukko peräkkäisiksi argumenteiksi funktiokutsussa. Sido perään parametrit joukkoon. Rest korvaa arguments
tarpeen ja käsittelee yleisiä tapauksia suoremmin.,
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..,
Iteraattoriesineet mahdollistavat mukautetun iteroinnin kuten CLR IEnumerable tai Java Iterable. Yleistää for..in
custom iteraattori-pohjainen iterointia, jossa for..of
. Älä vaadi ymmärtämistä array, mahdollistaen laiska suunnittelu malleja kuten LINQ.
Iteraatio perustuu näihin ankka-kirjoitetut käyttöliittymät (käyttäen Kirjoituskoneella tyyppi syntaksi näyttely vain):
lisätietoja: MDN varten…
Generaattorit
Generaattorit yksinkertaistaa iteraattori-authoring käyttäen function*
ja yield
., Funktio, joka on ilmoitettu funktioksi* palauttaa generaattorin instanssin. Generaattorit ovat alatyyppejä iteraattorit, jotka sisältävät lisää next
ja throw
. Näiden avulla arvot virrata takaisin generaattori, joten yield
on ilmaisun muoto, joka palauttaa arvon (tai heittää).
Huomautus: Voidaan käyttää myös mahdollistaa ’odottaa’-kuten async ohjelmointi, ks. myös ES7 await
ehdotus.,
generaattori käyttöliittymä on (käyttäen Kirjoituskoneella tyyppi syntaksi näyttely vain):
interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}
lisätietoja: MDN Iteraation pöytäkirjat,
Unicode
Ei-breaking lisäyksiä täysi Unicode-tuki, mukaan lukien uusi Unicode kirjaimellisesti muodossa jouset ja uusi RegExp u
mode käsitellä koodi pistettä, sekä uusi APIs käsitellä jouset 21bit koodi pistettä tasolla. Nämä lisäykset tukevat globaalien sovellusten rakentamista Javascriptissä.
lisätietoja: MDN RegExp.prototyyppi.,unicode
Moduulit
Kieli-tason tuki moduulit komponentin määritelmä. Kodifioi malleja suosittu JavaScript moduuli kuormaajat (AMD, CommonJS). Isäntäkohtaisen oletuskuormaajan määrittelemä ajonaikakäyttäytyminen. Implisiittisesti async malli-ei koodi suoritetaan, kunnes pyydetyt moduulit ovat saatavilla ja käsitellään.,v>
Joitakin muita ominaisuuksia ovat export default
ja 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);
Lisää MDN info: tuonti julkilausuman, vienti-ilmoitus
Moduuli Kuormaajat
Moduulin kuormaajat tuki:
- Dynaaminen lataaminen
- Valtion eristyneisyys
- Globaali nimiavaruus eristyneisyys
- Kokoelma koukut
- Sisäkkäisiä virtualisointi
oletuksena module loader voidaan määrittää, ja uusi kuormaajat voidaan laskennallisesti arvioida ja ladata koodi eristää tai rajoittaa yhteyksissä.,
Map + Set + WeakMap + WeakSet
yhteisten algoritmien tehokkaat Tietorakenteet. WeakMaps tarjoaa vuotamattomia objekti-avain ’ d Sivupöydät.
Lisää MDN info: Kartta, Asettaa, WeakMap, WeakSet
Valtakirja
Välityspalvelimet mahdollistavat luoda esineitä, joissa täyden valikoiman käyttäytymistä käytettävissä host esineitä. Voidaan käyttää sieppaukseen, objektivirtualisointiin, kirjaamiseen/profilointiin jne.
On olemassa ansoja saatavilla kaikki runtime-tasolla meta-toiminnot:
lisätietoja: MDN Proxy
Symbolit
Symbolit, jotta kulunvalvonta objektin tila., Symbolit mahdollistavat ominaisuudet on näppäilty joko string
(kuten ES5) tai symbol
. Symbolit ovat uusi alkukantainen tyyppi. Valinnainen description
virheenkorjauksessa käytetty parametri – mutta ei ole osa identiteettiä. Symbolit ovat ainutlaatuisia (kuten gensym), mutta eivät yksityisiä, koska ne paljastuvat heijastusominaisuuksien kuten Object.getOwnPropertySymbols
kautta.
lisätietoja: MDN-Symboli
Subclassable takkasydämet
ES6, takkasydämet, kuten Array
, Date
ja DOM Element
s voidaan subclassed.,
Object rakentaminen toiminto nimeltä Ctor
nyt käyttää kaksi-vaiheessa (sekä virtuaalisesti lähetetty):
- Kutsu
Ctor
jakaa esine, asentaa mitään erityistä käyttäytymistä - Vedota rakentaja uusia esimerkiksi alustaa
tiedossa @@create
symboli on saatavilla kautta Symbol.create
. Sisäänrakennettu nyt paljastaa @@create
eksplisiittisesti.,
Math + Numero + Merkkijono + Joukko + Objekti APIs
Monet uudet kirjasto lisäyksiä, mukaan lukien core Math kirjastot, Array muuntaminen auttajia, String auttajia, ja Objekti.määritä kopiointi.
More MDN info: Number, Math, Array.alkaen, Array.of, Array.prototyyppi.kuittaan, vastalause.määritä
Binääri ja Oktaali Literaaleja
Kaksi uutta numeerinen kirjaimellinen muodot ovat lisätty binary (b
) ja oktaali (o
).
0b111110111 === 503 // true0o767 === 503 // true
Lupaa
Lupaukset ovat kirjaston asynkroninen ohjelmointi., Lupaukset ovat arvomaailmaltaan ensiluokkainen edustus, joka saatetaan tulevaisuudessa saada käyttöön. Lupauksia käytetään monissa nykyisissä JavaScript-kirjastoissa.
lisätietoja: MDN Lupauksen
Heijastavat API
Koko reflection API altistaa runtime-tasolla meta-toimintoja esineitä. Tämä on käytännössä käänteinen Proxy API ja mahdollistaa puheluihin vastaa samaa meta-toiminnot kuten proxy ansoja. Erityisen hyödyllinen proxien toteuttamisessa.,
// No sample yet
lisätietoja: MDN Heijastavat
Tail Puhelut
Puhelut hännän asento ovat taatusti ei kasva pino unboundedly. Tekee rekursiiviset algoritmit turvallisiksi rajoittamattomien panosten edessä.