Array.prototype[@@unscopables]

A propriedade de símbolo @@unscopable contém nomes de propriedades que não foram incluídos no padrão ECMAScript antes da versão ES2015. Essas propriedades são excluídas do statement bindings with.

Sintaxe

arr[Symbol.unscopables]

Descrição

As propriedades padrão de array que são excluídas dos bindings with são: copyWithin, entries, fill, find, findIndex, includes, keys, e values.

Veja Symbol.unscopables para saber como definir unscopables para seus objetos.

Property attributes of Array.prototype[@@unscopables]
Writableno
Enumerableno
Configurableyes

Exemplos

O código a seguir funciona bem no ES5 e abaixo. No entanto, no ECMAScript 2015 e posterior, o método Array.prototype.keys() foi introduzido. Isso significa que dentro de ambientes with, as "keys" seriam agora o método e não a variável. É aqui que a propriedade de símbolo @@unscopables Array.prototype[@@unscopables] entra em ação e impede que alguns métodos do Array estejam sendo definidos na instrução with.

js
var keys = [];

with (Array.prototype) {
  keys.push("alguma coisa");
}

Object.keys(Array.prototype[Symbol.unscopables]);
// ["copyWithin", "entries", "fill", "find", "findIndex",
//  "includes", "keys", "values"]

Especificações

Specification
ECMAScript® 2025 Language Specification
# sec-array.prototype-%symbol.unscopables%

Compatibilidade com navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
[Symbol.unscopables]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Veja também