Introduction

ECMAScript 6, also known as ECMAScript 2015, is the latest version of the ECMAScript standard. ES6 é uma atualização significativa para o idioma, e a primeira atualização para o idioma desde que o ES5 foi padronizado em 2009. A implementação destes recursos nos principais motores JavaScript está em andamento agora.

veja a norma ES6 para a especificação completa da linguagem ECMAScript 6.,

ES6 inclui os seguintes recursos novos:

  • setas
  • classes
  • avançado literais de objeto
  • modelo de cadeias de caracteres
  • desestruturação
  • padrão de + resto + spread
  • deixe + const
  • iteradores + para..,de
  • geradores
  • unicode
  • módulos
  • módulo carregadores
  • mapa + definir + weakmap + weakset
  • proxies
  • símbolos
  • subclassable built-ins
  • promessas
  • matemática + número + string + matriz + objeto APIs
  • binário e octal literais
  • refletir api
  • chamadas finais

ECMAScript 6 Características

Setas

Flechas são uma função de forma abreviada, utilizando o => sintaxe. Eles são sintaticamente semelhantes ao recurso relacionado Em C#, Java 8 e CoffeeScript., Eles apoiam ambos os órgãos de bloco de declarações, bem como órgãos de expressão que retornam o valor da expressão. Ao contrário das funções, as setas compartilham o mesmo código lexical this como seu código circundante.

Mais informações: funções de seta MDN

As Classes

ES6 são um açúcar simples sobre o modelo OO baseado no protótipo. Ter uma única forma declarativa conveniente torna os padrões de classe mais fáceis de usar e incentiva a interoperabilidade. Classes suportam a herança baseada em protótipos, super chamadas, instância e métodos estáticos e construtores.,

Mais informações: MDN Classes

Avançado Literais de Objeto

Objeto literais são estendidos para suportar a definição do protótipo em construção, abreviatura de foo: foo atribuições, a definição de métodos, fazendo com que super chama e de computação de nomes de propriedade expressões. Juntos, estes também aproximam os literais de objetos e as declarações de classes, e que o design baseado em objetos beneficie de algumas das mesmas conveniências.,

Mais informações: gramática e tipos MDN: literais de objectos

strings de modelos

strings de modelos fornecem açúcar sintático para a construção de strings. Isto é semelhante às características de interpolação de cordas em Perl, Python e muito mais. Opcionalmente, uma tag pode ser adicionada para permitir que a construção de string seja personalizada, evitando ataques de injeção ou construindo estruturas de dados de nível superior a partir do conteúdo de string.

Mais informações: Cadeias de modelos MDN

destruição

destruição permite a ligação usando correspondência de padrões, com suporte para matrizes e objetos correspondentes., A destruição é fail-soft, similar à pesquisa de objetos padrão foo, produzindo undefined valores quando não encontrados.

Mais informação: atribuição de destruição MDN

Default + Rest + Spread

Callee-avaliação dos parâmetros predefinidos. Transforme um array em argumentos consecutivos em uma chamada de função. Ligar os parâmetros de Rasto a uma matriz. O resto substitui a necessidade de arguments e aborda casos comuns mais diretamente.,

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

Iterator objects enable Iteration like CLR IEnumerable or Java Iterable. Generalize for..in para iteração personalizada baseada no iterador com for..of. Não é preciso perceber uma matriz, permitindo padrões de design preguiçosos como o LINQ.

iteração é baseada nestas interfaces de tipo pato (usando apenas a sintaxe do tipo TypeScript para a exposição):

Mais informações: MDN for…de geradores

geradores

geradores simplificam a autorização do iterador utilizandofunction* eyield., Uma função declarada como função * retorna uma instância Gerador. Os geradores são subtipos de iteradores que incluem next e throw. Estes valores activam o fluxo de volta para o gerador, por isso yield é uma forma de expressão que devolve um valor (ou lança).

nota: também pode ser usado para permitir a programação async semelhante a ‘espera’, ver também ES7 await proposta.,

O gerador de interface é (usando o TypeScript tipo de sintaxe para exposição única):

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

Mais informações: MDN Iteração protocolos

Unicode

Não quebra adições para suporte completo a Unicode, incluindo Unicode novo formulário literal em cadeias e new RegExp u modo de lidar com pontos de código, bem como novas APIs para o processo de seqüências de caracteres no 21bit código de nível de pontos. Estas adições suportam a construção de aplicativos globais em JavaScript.

Mais informações: MDN RegExp.prototipo.,unicode

Módulos

Suporte de Nível de linguagem para módulos para definição de componentes. Codifica padrões de populares Carregadores de módulos JavaScript (AMD, CommonJS). Comportamento de execução definido por um carregador predefinido por máquina. Implicitamente modelo async-nenhum código executa até que os módulos solicitados estejam disponíveis e processados.,v>

Algumas características adicionais incluem export default e 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);

Mais MDN info: declaração de importação, da declaração de exportação

Módulo Carregadores

o Módulo de carregadores de apoio:

  • carregamento Dinâmico
  • Estado de isolamento
  • namespace Global de isolamento
  • Compilação ganchos
  • Aninhados virtualização

O padrão de carregador de módulo pode ser configurado, e os novos carregadores pode ser construído para avaliar e carregar o código no isolado ou restrito contextos.,

Map + Set + WeakMap + WeakSet

estruturas de dados eficientes para algoritmos comuns. O smakmaps fornece tabelas laterais sem fugas.

Mais informação MDN: Mapa, conjunto, WeakMap, WeakSet

Proxies

Proxies permitem a criação de objectos com toda a gama de comportamentos disponíveis para hospedar objectos. Pode ser usado para interceptação, virtualização de objetos, registro/análise, etc.

existem armadilhas disponíveis para todas as meta-operações de execução:

Mais informação: Proxy MDN

Símbolos

Símbolos permitem o controlo de Acesso para o estado do objecto., Os símbolos permitem que as propriedades sejam assinaladas por: string (como em ES5) ou symbol. Os símbolos são um novo tipo primitivo. Opcional description parâmetro usado em depuração – mas não faz parte da identidade. Símbolos são únicos (como gensym), mas não privados, uma vez que são expostos através de características de reflexão como Object.getOwnPropertySymbols.

Mais informações: MDN Símbolo

Subclassable Built-ins

Em ES6, built-ins como o Array Date DOM Elements pode ser uma subclasse.,

Objeto a construção de uma função chamada Ctor agora usa de duas fases (ambos praticamente envio):

  • Chamada de Ctor alocar o objeto, a instalação de qualquer comportamento especiais
  • Invocar o construtor nova instância para inicializar

O conhecido @@create símbolo está disponível por meio de Symbol.create. Built-ins agora expõem seu id

explicitamente.,

Math + Number + String + Array + Object APIs

muitas novas adições à biblioteca, incluindo bibliotecas de matemática Central, ajudantes de conversão de Array, ajudantes de String E Object.atribuir para copiar.

Mais informação MDN: número, matemática, matriz.de, Array.of, Array.prototipo.entendido, objecto.atribuir

literais binários e octais

duas novas formas literais numéricas são adicionadas para Binárias (b) e octal (o).

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

Promessas

as Promessas são uma biblioteca para programação assíncrona., Promessas são uma representação de primeira classe de um valor que pode ser disponibilizado no futuro. Promessas são usadas em muitas bibliotecas JavaScript existentes.

Mais informação: promessa MDN

reflecte API

API de reflexão completa expondo as meta-operações de execução em objectos. Isto é efetivamente o inverso da API Proxy, e permite fazer chamadas correspondentes às mesmas meta-operações que as armadilhas proxy. Especialmente útil para a implementação de proxies.,

// No sample yet

Mais informações: MDN Reflect

Tail Calls

Calls in tail-position are guarantee to not grow the stack unboundedly. Torna os algoritmos recursivos seguros face a Entradas sem limites.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *