Indledning
ECMAScript 6, også kendt som ECMAScript 2015, er den nyeste version af ECMAScript standard. ES6 er en væsentlig opdatering til sproget, og den første opdatering til sproget siden ES5 blev standardiseret i 2009. Implementering af disse funktioner i større JavaScript-motorer er i gang nu.
se ES6-standarden for fuld specifikation af ECMAScript 6-sproget.,
ES6 indeholder følgende nye funktioner:
- pilene
- klasser
- øget objekt konstanter
- skabelon strenge
- destruktureringsdeklaration
- standard + resten + spredning
- lad + const
- iteratorer + for..,af
- generatorer
- unicode
- moduler
- modul læssemaskiner
- kort + sæt + weakmap + weakset
- proxies
- symbol
- subclassable bygget-ins
- løfter
- matematik + nummer + string + array + objekt-Api ‘
- binære og oktale konstanter
- afspejle api
- hale opkald
ECMAScript 6 Funktioner
Pilene
Pile er en funktion stenografi ved brug af =>
syntaks. De er syntaktisk ligner den relaterede funktion i C#, Java 8 og CoffeeScript., De understøtter både sætning blok organer samt udtryk organer, der returnerer værdien af udtrykket. I modsætning til funktioner deler pile den samme leksikalske this
som deres omgivende kode.
Mere info: MDN Pil Funktioner
Klasser
ES6 klasser er et simpelt sukker over den prototype-baseret OO mønster. At have en enkelt praktisk deklarativ form gør klassemønstre lettere at bruge og tilskynder til interoperabilitet. Klasser understøtter prototype-baserede arv, super opkald, instans og statiske metoder og konstruktører.,
Mere info: MDN Klasser
Øget Objekt Konstanter
Objekt konstanter er udvidet til at støtte indstilling prototypen på byggeri, forkortelse for foo: foo
opgaver, der fastlægger metoder, hvilket gør super opkald, og computing ejendom navne med udtryk. Sammen bringer disse også objektlitteraler og klassedeklarationer tættere sammen og lader objektbaseret design drage fordel af nogle af de samme bekvemmeligheder.,
Mere info: MDN grammatik og typer: Object literals
Skabelonstrenge
Skabelonstrenge giver syntaktisk sukker til konstruktion af strenge. Dette svarer til streng interpolation funktioner i Perl, Python og meget mere. Eventuelt kan et tag tilføjes for at tillade streng konstruktion, der skal tilpasses, undgå injektion angreb eller konstruere højere niveau datastrukturer fra streng indhold.
Mere info: MDN Skabelon Strenge
Destruktureringsdeklaration
Destruktureringsdeklaration tillader binding ved hjælp af mønstertilpasning, med støtte til matchende arrays og objekter., Destrukturering er fejlblødt, svarende til standard object lookup foo
, der producerer undefined
værdier, når de ikke findes.
Mere info: MDN Destructuring assignment
Default + Rest + Spread
Callee-evaluerede standardparameterværdier. Skift et array til fortløbende argumenter i et funktionskald. Bind efterfølgende parametre til et array. Rest erstatter behovet for arguments
og behandler almindelige sager mere direkte.,
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..,Af
iteratorobjekter aktiverer brugerdefineret iteration som CLR IEnumerable eller Java Iterable. Generaliser for..in
til brugerdefineret iteratorbaseret iteration med for..of
. Kræver ikke at realisere et array, der muliggør dovne designmønstre som Lin..
Iteration er baseret på disse duck-typet grænseflader (ved hjælp af Maskine type syntaks for redegørelsen kun):
Mere info: MDN for…af
Generatorer
Generatorer forenkle iterator-authoring ved hjælp af function*
og yield
., En funktion erklæret som funktion * returnerer en generator instans. Generatorer er undertyper af iteratorer, som omfatter yderligere next
og throw
. Disse gør det muligt for værdier at strømme tilbage i generatoren, så yield
er en udtryksform, der returnerer en værdi (eller kaster).Bemærk: kan også bruges til at aktivere ‘a awaitait’ – lignende async-programmering, Se også ES7 await
forslag.,
generator interface (ved hjælp af Maskine type syntaks for redegørelsen kun):
interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}
Mere info: MDN Iteration protokoller
Unicode
Non-breaking tilføjelser til støtte for fuld Unicode, herunder nye Unicode bogstavelig form, strygere og new RegExp u
mode til at håndtere kode punkter, samt nye Api ‘ er til at behandle strygere i 21bit kode point-niveau. Disse tilføjelser understøtter opbygning af globale apps i JavaScript.
Mere info: MDN Rege .p.prototype.,unicode
moduler
understøttelse af sprogniveau for moduler til komponentdefinition. Kodificerer mønstre fra populære JavaScript-modul læssemaskiner (AMD, CommonJS). Runtime adfærd defineret af en vært-defineret standard loader. Implicit async model – ingen kode udfører indtil ønskede moduler er tilgængelige og behandles.,v>
Nogle yderligere funktioner omfatter export default
og 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);
Mere MDN info: import erklæring, eksport erklæring
Modul Læssemaskiner
Modul læssemaskiner støtte:
- Dynamisk belastning
- Stat isolation
- Globale navneområde isolation
- Udarbejdelse kroge
- Indlejrede virtualisering
standard module loader kan konfigureres, og nye læssemaskiner kan være konstrueret til at evaluere og til at indlæse kode i isoleret eller begrænset sammenhænge.,
Map + Set + Weakeakmap + Weakeakset
effektive datastrukturer for almindelige algoritmer. Weakeakmaps giver lækage-fri objekt-key ‘ d sideborde.
mere MDN info: kort, sæt, Weakeakmap, Weakeakset
fuldmagter
fuldmagter aktiverer oprettelse af objekter med hele spektret af adfærd til rådighed for at være vært for objekter. Kan bruges til aflytning, objekt virtualisering, logning/profilering, etc.
Der er fælder til rådighed for alle meta-operationer på runtime-niveau:
Mere info: MDN Pro .y
symboler
symboler aktiverer adgangskontrol for objekttilstand., Symboler tillader indtastning af egenskaber ved enten string
(som i ES5) eller symbol
. Symboler er en ny primitiv type. Valgfridescription
parameter, der bruges til fejlfinding – men er ikke en del af identiteten. Symboler er unikke (som gensym), men ikke private, da de udsættes via refleksionsfunktioner som Object.getOwnPropertySymbols
.
Mere info: MDN Symbol
Subclassable Bygget-ins
I ES6, bygget-ins som Array
Date
og DOM Element
s kan være delklasser.,
Objekt konstruktion for en funktion med navnet Ctor
nu bruger to-faser (både stort set afsendt):
- Opkald >
Ctor
for at tildele objektet, installation af eventuelle særlige adfærd - Påberåbe sig konstruktør på ny instans til at initialisere
De kendte @@create
symbolet er tilgængelige via Symbol.create
. Indbyggede ins udsætter nu deres @@create
eksplicit.,
Math + Number + String + Array + Object API ‘ er
mange nye bibliotek tilføjelser, herunder core Math biblioteker, Array konvertering hjælpere, String hjælpere, og objekt.Tildel til kopiering.
mere MDN info: nummer, matematik, Array.fra, Array.af, Array.prototype.copyinithin, objekt.tildel
Binære og Oktale Konstanter
To nye numeriske bogstavelig former er tilføjet til binær (b
) og oktal (o
).
0b111110111 === 503 // true0o767 === 503 // true
løfter
løfter er et bibliotek til asynkron programmering., Løfter er en førsteklasses repræsentation af en værdi, der muligvis stilles til rådighed i fremtiden. Løfter bruges i mange eksisterende JavaScript-biblioteker.
Mere info: MDN løfte
reflektere API
fuld refleksion API udsætter runtime-niveau meta-operationer på objekter. Dette er effektivt den inverse af Pro .y API, og gør det muligt at foretage opkald, der svarer til de samme meta-operationer som pro .y fælder. Især nyttigt til implementering af fuldmagter.,
// No sample yet
Mere info: MDN Afspejler
Hale Opkald
Opkald i tail-position er garanteret ikke vokser stakken unboundedly. Gør rekursive algoritmer sikre i lyset af ubundne indgange.