Introducere

ECMAScript 6, de asemenea, cunoscut sub numele de ECMAScript 2015, este cea mai recentă versiune de Argumente standard. ES6 este o actualizare semnificativă a limbii, și prima actualizare a limbii, deoarece ES5 a fost standardizat în 2009. Punerea în aplicare a acestor caracteristici în motoarele majore JavaScript este în curs de desfășurare acum.

consultați standardul ES6 pentru specificarea completă a limbii ECMAScript 6.,

ES6 include următoarele caracteristici noi:

  • săgețile
  • cursuri
  • îmbunătățită obiect literali
  • șablon siruri de caractere
  • destructurare
  • default + restul + răspândit
  • să + const
  • iteratori + pentru..,de
  • generatoare
  • unicode
  • module
  • modulul de incarcatoare
  • harta + set + weakmap + weakset
  • proxy-uri
  • simboluri
  • subclassable construit-in-uri
  • promite
  • matematica + număr + string + serie + obiect Api-uri
  • binar și octal literali
  • reflecta api
  • coada apeluri

ECMAScript 6 Caracteristici

Săgețile

Săgețile sunt o funcție prescurtare folosind => sintaxa. Ele sunt similare sintactic cu caracteristica aferentă în C#, Java 8 și CoffeeScript., Ele susțin atât corpurile blocului de declarații, cât și corpurile de Expresie care returnează valoarea expresiei. Spre deosebire de funcții, săgețile împărtășesc același lexical this ca codul lor înconjurător.

Mai multe informații: funcțiile săgeată MDN

clase

clasele ES6 sunt un zahăr simplu peste modelul oo bazat pe prototip. Având o singură formă declarativă convenabil face modele de clasă mai ușor de utilizat, și încurajează interoperabilitatea. Clasele acceptă moștenirea bazată pe prototip, super apeluri, instanțe și metode statice și constructori.,

Mai multe informatii: MDN Clase

Îmbunătățită Obiect Literali

Obiect literale sunt extinse pentru a sprijini stabilirea prototip la construcție, prescurtare pentru foo: foo misiuni, definirea metodelor, face super apeluri, și de calcul de proprietate nume cu expresii. Împreună, acestea aduc, de asemenea, literale obiect și declarații de clasă mai aproape împreună, și să design bazat pe obiect beneficiază de unele dintre aceleași facilități.,

Mai multe informații: MDN gramatică și tipuri: literali obiect

șirurile de șabloane

șirurile de șabloane oferă zahăr sintactic pentru construirea șirurilor. Acest lucru este similar cu caracteristici de interpolare șir în Perl, Python și mai mult. Opțional, se poate adăuga o etichetă pentru a permite personalizarea construcției șirului, evitând atacurile de injecție sau construind structuri de date de nivel superior din conținutul șirului.

Mai multe informații: șirurile de șabloane MDN

destructurarea

destructurarea permite legarea folosind potrivirea modelelor, cu suport pentru potrivirea matricelor și obiectelor., Destructurare este fail-soft, similar cu standard de căutare obiect foo, produc undefined valori atunci când nu a fost găsit.

Mai multe informații: MDN Destructuring assignment

implicit + Rest + Spread

valorile parametrilor implicite evaluate de Callee. Transformați o matrice în argumente consecutive într-un apel de funcții. Legați parametrii de urmărire la o matrice. Rest înlocuiește nevoia pentru arguments și abordează cazurile comune mai direct.,

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..,De obiecte Iterator

permite iterație personalizate cum ar fi CLR IEnumerable sau Java Iterable. Generaliza for..in personalizat iterator pe bază de iterație cu for..of. Nu necesită realizarea unei matrice, permițând modele de design leneș, cum ar fi LINQ.

iterația se bazează pe aceste interfețe tip duck (folosind sintaxa de tip TypeScript doar pentru expunere):

Mai multe informații: MDN pentru…de

Generatoare

Generatoare simplifica iterator-creație folosind function* și yield., O funcție declarată ca funcție * returnează o instanță Generator. Generatoarele sunt subtipuri de iteratori care includ suplimentare next și throw. Acestea permit valorilor să curgă înapoi în generator, deci yield este o formă de Expresie care returnează o valoare (sau aruncă).

notă: poate fi folosit și pentru a activa programarea asincronă de tip ‘wait’, vezi și ES7 await propunere.,

generatorul de interfață este (folosind mașina de Scris tip de sintaxă pentru expoziția numai):

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

Mai multe informatii: MDN Repetare protocoale

Unicode

Non-rupere completări la suport complet pentru Unicode, inclusiv noi Unicode formă literală în siruri de caractere și new RegExp u modul să se ocupe de puncte de cod, precum și de noi Api-uri pentru procesul de siruri de caractere de la 21bit cod nivel de puncte. Aceste adăugiri sprijină construirea de aplicații globale în JavaScript.mai multe informații: MDN RegExp.prototip.,unicode

module

suport la nivel de limbă pentru module pentru definirea componentelor. Codifică modele de populare Încărcătoare Modul JavaScript (AMD, CommonJS). Comportamentul Runtime definit de un încărcător implicit definit de gazdă. Implicit async model-nici un cod execută până când modulele solicitate sunt disponibile și prelucrate.,v>

Unele caracteristici suplimentare includ 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);

Mai multe MDN info: import declarație, declarația de export

Modulul Incarcatoare

Modulul incarcator suport:

  • încărcare Dinamică
  • Starea de izolare
  • nume Global de izolare
  • Elaborarea cârlige
  • virtualizare Imbricate

implicit module loader poate fi configurat, și noi încărcătoare pot fi construite pentru a evalua și de a încărca codul în izolate sau constrâns contexte.,

harta + Set + WeakMap + WeakSet

structuri de date eficiente pentru algoritmi comune. WeakMaps oferă mese laterale obiect-key ‘ D fără scurgeri.

Mai multe MDN info: Harta, Set, WeakMap, WeakSet

Proxy-uri

Proxy-uri permit crearea de obiecte cu întreaga gamă de comportamente disponibile pentru a găzdui obiecte. Poate fi folosit pentru interceptare, virtualizare obiect, logare/profilare, etc.

există capcane disponibile pentru toate meta-operațiunile la nivel de execuție:

Mai multe informații: MDN Proxy

simboluri

simboluri activează controlul accesului pentru starea obiectului., Simbolurile permit ca proprietățile să fie tastate fie cu string (ca în ES5), fie cu symbol. Simbolurile sunt un nou tip primitiv. Opțional description parametru utilizat în depanare – dar nu face parte din identitate. Simbolurile sunt unice (cum ar fi gensym), dar nu private, deoarece sunt expuse prin caracteristici de reflecție precum Object.getOwnPropertySymbols.

Mai multe informatii: MDN Simbol

Subclassable Construit-in-uri

În ES6, construit-in-uri ca Array, Date și DOM Element – uri pot fi subclasat.,

Obiect de construcție pentru o funcție numită Ctor foloseste acum două faze (ambele practic expediate):

  • Apel Ctor să aloce obiect, instalarea speciale de comportament
  • Invoca constructorul pe noi exemplu pentru a inițializa

cunoscut @@create simbol este disponibil prin intermediul Symbol.create. Built-in-uri expune acum lor @@create în mod explicit.,

Math + Number + String + Array + Object API-uri

multe adăugiri noi de bibliotecă, inclusiv biblioteci de matematică de bază, ajutoare de conversie matrice, ajutoare șir, și obiect.alocați pentru copiere.

Mai multe informații MDN: număr, matematică, matrice.din, matrice.de, matrice.prototip.copyWithin, obiect.atribui

Binar și Octal Literali

Două noi numeric, literal forme sunt adăugate pentru binare (b) și octal (o).

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

promisiuni

promisiunile sunt o bibliotecă pentru programarea asincronă., Promisiunile sunt o reprezentare de primă clasă a unei valori care poate fi pusă la dispoziție în viitor. Promisiunile sunt folosite în multe biblioteci JavaScript existente.mai multe informații: MDN Promise

Reflect API

full reflection API expunând meta-operațiunile la nivel de execuție pe obiecte. Acest lucru este în mod eficient inversul API Proxy, și permite efectuarea de apeluri corespunzătoare aceleași meta-operațiuni ca capcanele proxy. Este deosebit de util pentru implementarea proxy-urilor.,

// No sample yet

Mai multe informatii: MDN Reflecta

Coada Apeluri

Apeluri din coada de poziție sunt garantate să nu crească stack unboundedly. Face algoritmi recursive în condiții de siguranță în fața intrări nelimitate.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *