Saltar al contenido principal

Aserciones de importación

· 3 min de lectura
Dan Clark ([@dandclark1](https://twitter.com/dandclark1)), importador asertivo de aserciones de importación

La nueva función de aserciones de importación permite que las declaraciones de importación de módulos incluyan información adicional junto al especificador del módulo. Un uso inicial de esta función es habilitar la importación de documentos JSON como módulos JSON:

Verificaciones de marca privada, también conocido como `#foo in obj`

· 3 min de lectura
Marja Hölttä ([@marjakh](https://twitter.com/marjakh))

El operador in puede ser usado para comprobar si un objeto dado (o cualquier objeto en su cadena de prototipos) tiene la propiedad especificada:

const o1 = {'foo': 0};
console.log('foo' in o1); // true
const o2 = {};
console.log('foo' in o2); // false
const o3 = Object.create(o1);
console.log('foo' in o3); // true

La característica de verificaciones de marca privada extiende el operador in para soportar campos privados de clase:

class A {
  static test(obj) {
    console.log(#foo in obj);
  }
  #foo = 0;
}

A.test(new A()); // true
A.test({}); // false

class B {
 #foo = 0;
}

A.test(new B()); // false; no es el mismo #foo

Dado que los nombres privados solo están disponibles dentro de la clase que los define, la prueba también debe ocurrir dentro de la clase, por ejemplo, en un método como static test arriba.

Las instancias de subclases reciben campos privados de la clase padre como propiedades propias:

class SubA extends A {};
A.test(new SubA()); // true

Pero los objetos creados con Object.create (o que tienen el prototipo configurado más tarde mediante el setter __proto__ o Object.setPrototypeOf) no reciben los campos privados como propiedades propias. Debido a que la búsqueda de campos privados solo funciona en propiedades propias, el operador in no encuentra estos campos heredados:

Bloques de inicialización estática de clases

· 2 min de lectura
Shu-yu Guo ([@_shu](https://twitter.com/_shu))

La nueva sintaxis del bloque de inicialización estática de clases permite a los desarrolladores reunir el código que debe ejecutarse una vez para una definición de clase dada y colocarlo en un solo lugar. Considere el siguiente ejemplo, donde un generador de números pseudoaleatorios utiliza un bloque estático para inicializar un grupo de entropía una vez, cuando se evalúa la definición de class MyPRNG.

`Intl.DisplayNames`

· 4 min de lectura
Shu-yu Guo ([@_shu](https://twitter.com/_shu)) y Frank Yung-Fong Tang

Las aplicaciones web que alcanzan una audiencia global necesitan mostrar los nombres de visualización de idiomas, regiones, escrituras y monedas en muchos idiomas diferentes. Las traducciones de esos nombres requieren datos, que están disponibles en el Unicode CLDR. Incluir los datos como parte de la aplicación implica un costo de tiempo de desarrollo. Es probable que los usuarios prefieran traducciones consistentes de los nombres de idiomas y regiones, y mantener esos datos actualizados con los acontecimientos geopolíticos del mundo requiere mantenimiento constante.

Aplicaciones rápidas y paralelas con WebAssembly SIMD

· 11 min de lectura
Deepti Gandluri ([@dptig](https://twitter.com/dptig)), Thomas Lively ([@tlively52](https://twitter.com/tlively52)), Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser))

SIMD significa Single Instruction, Multiple Data (Instrucción Única, Múltiples Datos). Las instrucciones SIMD son una clase especial de instrucciones que aprovechan el paralelismo de datos en las aplicaciones al realizar simultáneamente la misma operación en múltiples elementos de datos. Las aplicaciones intensivas en cálculo, como códecs de audio/video, procesadores de imágenes, son ejemplos de aplicaciones que se benefician de las instrucciones SIMD para acelerar el rendimiento. La mayoría de las arquitecturas modernas admiten algunas variantes de instrucciones SIMD.

Índices de coincidencia de RegExp

· 5 min de lectura
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), expresando nuevas características regularmente

JavaScript ahora está equipado con una nueva mejora de expresiones regulares, llamada “índices de coincidencia”. Imagínate que quieres encontrar nombres de variables inválidos en el código JavaScript que coincidan con palabras reservadas, y mostrar un símbolo de intercalación y una “línea de subrayado” debajo del nombre de la variable, como:

`String.prototype.replaceAll`

· 4 min de lectura
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Si alguna vez has trabajado con cadenas en JavaScript, es probable que te hayas encontrado con el método String#replace. String.prototype.replace(searchValue, replacement) devuelve una cadena con algunas coincidencias reemplazadas, basándose en los parámetros que especifiques: