Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnología web para desarrolladores
  2. JavaScript
  3. Referencia de JavaScript
  4. Objetos globales
  5. Symbol
  6. Symbol.unscopables

Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.

View in EnglishAlways switch to English

Symbol.unscopables

El símbolo conocido comoSymbol.unscopables se utiliza para especificar un valor de objeto cuyos nombres de propiedades propias y heredadas se excluyen de los enlaces de entornowith del objeto asociado.

Pruébalo

const object1 = {  property1: 42,};object1[Symbol.unscopables] = {  property1: true,};with (object1) {  console.log(property1);  // Expected output: Error: property1 is not defined}

Descripción

El símbolo@@unscopables (Symbol.unscopables) puede definirse en cualquier objeto para excluir los nombres de propiedades de ser expuestos como variables léxicas en los enlaces de entornowith. Tenga en cuenta que si utilizaModo estricto, las declaracioneswith no están disponibles y probablemente tampoco necesiten este símbolo.

Establecer una propiedad atrue en un objetounscopable la haráunscopable y por tanto no aparecerá en las variables de ámbito léxico. Establecer una propiedad afalse la haráscopable y por lo tanto aparecerá en las variables de ámbito léxico.

Atributos de la propiedadSymbol.unscopables
SobrescribirNo
NumerableNo
ConfigurableNo

Ejemplos

Scoping con sentencias

El siguiente código funciona bien en ES5 y posteriores. Sin embargo, en ECMAScript 2015 y posteriores, se introdujo el métodoArray.prototype.keys(). Eso significa que dentro del entornowith "keys" sería ahora el método y no la variable. Fue entonces cuando se introdujo el símbolounscopable. Un ajuste incorporado deunscopables se implementa comoArray.prototype[@@unscopables] para evitar que algunos de los métodos de Array se encuentren dentro de la declaraciónwith.

js
const keys = [];with (Array.prototype) {  keys.push("something");}Object.keys(Array.prototype[Symbol.unscopables]);// ["copyWithin", "entries", "fill", "find", "findIndex",//  "includes", "keys", "values"]

Unscopables en objetos

También puede establecerunscopables para sus propios objetos.

js
const obj = {  foo: 1,  bar: 2,};obj[Symbol.unscopables] = {  foo: false,  bar: true,};with (obj) {  console.log(foo); // 1  console.log(bar); // ReferenceError: bar is not defined}

Especificaciones

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.unscopables

Compatibilidad con navegadores

Véase también

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp