Introducción

ECMAScript 6, también conocido como ECMAScript 2015, es la última versión del estándar ECMAScript. ES6 es una actualización significativa del idioma, y la primera actualización del idioma desde que ES5 se estandarizó en 2009. La implementación de estas características en los principales motores JavaScript está en marcha.

vea el estándar ES6 para la especificación completa del lenguaje ECMAScript 6.,

ES6 incluye las siguientes características nuevas:

  • flechas
  • clases
  • literales de objetos mejorados
  • cadenas de plantilla
  • desestructuring
  • default + rest + spread
  • let + const
  • iteradores + for..,de
  • generadores
  • unicode
  • modules
  • module loaders
  • map + set + weakmap + weakset
  • proxies
  • symbols
  • subclassable built-ins
  • promises
  • math + number + string + array + object APIs
  • binario y octal literals
  • reflect API
  • tail calls

características de ECMAScript 6

arrows

arrows son una abreviatura de función que utiliza la sintaxis =>. Son sintácticamente similares a la característica relacionada en C#, Java 8 y CoffeeScript., Soportan tanto cuerpos de bloque de sentencia como cuerpos de expresión que devuelven el valor de la expresión. A diferencia de las funciones, las flechas comparten el mismo léxico this como su código circundante.

Más información: Funciones de flecha MDN

clases

Las Clases ES6 son un simple azúcar sobre el patrón oo basado en prototipos. Tener una sola forma declarativa conveniente hace que los patrones de clase sean más fáciles de usar y fomenta la interoperabilidad. Las clases admiten herencia basada en prototipos, super llamadas, instancias y métodos estáticos y constructores.,

Más información: las clases MDN

literales de objetos mejorados

Los literales de objetos se amplían para admitir la configuración del prototipo En construcción, la abreviatura de las asignaciones foo: foo, la definición de métodos, la realización de súper llamadas y el cálculo de nombres de propiedades con expresiones. Juntos, estos también acercan los literales de objetos y las declaraciones de clase, y permiten que el diseño basado en objetos se beneficie de algunas de las mismas comodidades.,

Más información: gramática y tipos de MDN: literales de objeto

cadenas de plantilla

Las cadenas de plantilla proporcionan azúcar sintáctico para construir cadenas. Esto es similar a las características de interpolación de cadenas en Perl, Python y más. Opcionalmente, se puede agregar una Etiqueta para permitir que la construcción de la cadena se personalice, evitando ataques de inyección o construyendo estructuras de datos de nivel superior a partir del contenido de la cadena.

Más información: MDN Template Strings

Desestructuring

Desestructuring permite enlazar usando pattern matching, con soporte para emparejar arrays y objetos., La desestructuración es fail-soft, similar a la búsqueda de objetos estándar foo, produciendo valores undefined cuando no se encuentran.

Más información: MDN Desestructuring assignment

Default + Rest + Spread

valores de parámetros predeterminados evaluados por el destinatario. Convierte un array en argumentos consecutivos en una llamada a función. Enlaza los parámetros finales a una matriz. Rest reemplaza la necesidad de arguments y aborda casos comunes más directamente.,

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..,Los objetos Iterator de

permiten la iteración personalizada como CLR Iterumerable o Java Iterable. Generalice for..ina una iteración personalizada basada en iteradores con for..of. No requiere realizar una matriz, lo que permite patrones de diseño perezosos como LINQ.

la iteración se basa en estas interfaces de tipo pato (usando la sintaxis de tipo TypeScript solo para la exposición):

Más información: MDN for…de

Generadores

Generadores de simplificar iterador-autoría con function* y yield., Una función declarada como function * devuelve una instancia del generador. Los generadores son subtipos de iteradores que incluyen adicional next y throw. Estos permiten que los valores vuelvan al generador, por lo que yield es una forma de expresión que devuelve un valor (o lanza).

Nota: También se puede usar para habilitar la programación asíncrona similar a ‘await’, consulte también ES7 await propuesta.,

la interfaz del generador es (usando la sintaxis de tipo TypeScript solo para la exposición):

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

Más información: MDN Iteration protocols

Unicode

adiciones sin interrupción para admitir Unicode completo, incluyendo nueva forma literal Unicode en cadenas y nueva expresión regular u mode to handle code points, as well as new APIs to process strings at the 21bit code points level. Estas adiciones admiten la creación de aplicaciones globales en JavaScript.

Más información: MDN RegExp.prototipo.,unicode

Modules

soporte a nivel de idioma para módulos para la definición de componentes. Codifica patrones de cargadores de Módulos JavaScript populares (AMD, CommonJS). Comportamiento en tiempo de ejecución definido por un cargador predeterminado definido por el host. Modelo implícitamente asincrónico-ningún código se ejecuta hasta que los módulos solicitados estén disponibles y procesados.,v>

algunas características adicionales incluyen export default y 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);

más información MDN: import statement, Export statement

module loaders

module loaders support:

  • dynamic loading
  • State Isolation
  • global namespace Isolation
  • Compilation hooks
  • virtualización anidada

el cargador de módulos predeterminado se puede configurar, y se pueden construir nuevos cargadores para evaluar y cargar código contextos restringidos.,

Map + Set + WeakMap + WeakSet

estructuras de datos eficientes para algoritmos comunes. WeakMaps proporciona mesas auxiliares sin fugas de objetos clave.

Más información MDN: Map, Set, WeakMap, WeakSet

Proxies

los Proxies permiten la creación de objetos con toda la gama de comportamientos disponibles para alojar objetos. Se puede utilizar para interceptación, virtualización de objetos,registro / creación de perfiles, etc.

hay trampas disponibles para todas las metaoperaciones a nivel de tiempo de ejecución:

Más información: Proxy MDN

Símbolos

Los símbolos habilitan el control de acceso para el estado del objeto., Los símbolos permiten que las propiedades sean codificadas por string(como en ES5) o symbol. Los símbolos son un nuevo tipo primitivo. Parámetro opcional description utilizado en la depuración – pero no es parte de la identidad. Los símbolos son únicos (como gensym), pero no privados, ya que están expuestos a través de características de reflexión como Object.getOwnPropertySymbols.

Más información: MDN Symbol

Subclasable Built-ins

en ES6, built-ins como Array, Date y DOM Elements pueden ser subclasadas.,

la construcción de objetos para una función llamada Ctor ahora usa dos fases (ambas prácticamente despachadas):

  • Call Ctor para asignar el objeto, instalando cualquier comportamiento especial
  • Invoke constructor en una nueva instancia para inicializar

el conocido está disponible a través de Symbol.create. Los Built-ins ahora exponen su @@create explícitamente.,

Math + Number + String + Array + Object APIs

muchas adiciones de bibliotecas nuevas, incluidas bibliotecas matemáticas básicas, ayudantes de conversión de matrices, ayudantes de cadenas y objetos.asignar para copiar.

Más información MDN: número, Matemáticas, matriz.de, Array.de, matriz.prototipo.copiado dentro, objeto.asignar

literales binarios y octales

se agregan dos nuevas formas literales numéricas para binary (b) y octal (o).

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

Promises

Promises son una biblioteca para programación asíncrona., Las promesas son una representación de primera clase de un valor que puede estar disponible en el futuro. Las promesas se utilizan en muchas bibliotecas JavaScript existentes.

Más información: MDN Promise

Reflect API

Full reflection API exponiendo las meta-operaciones a nivel de tiempo de ejecución en objetos. Esto es efectivamente el inverso de la API de Proxy, y permite hacer llamadas correspondientes a las mismas metaoperaciones que las trampas de proxy. Especialmente útil para implementar proxies.,

// No sample yet

Más información: MDN Reflect

Tail Calls

se garantiza que las llamadas en tail-position no harán crecer la pila sin restricciones. Hace que los algoritmos recursivos sean seguros frente a Entradas ilimitadas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *