A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Symbol/unscopables below:

Symbol.unscopables - JavaScript | MDN

Symbol.unscopables

Широко известный символ Symbol.unscopables используется для указания значения объекта, чьи собственные и наследуемые имена свойств исключаются из привязок связанного объекта оператора with.

Записываемое нет Перечисляемое нет Настраиваемое нет Описание

Символ @@unscopables (Symbol.unscopables) может быть определён к любому объекту, чтобы исключить имена свойств из-за того, что они отображаются как лексические переменные с привязкой окружения with. Обратите внимание: если использовать "Строгий режим", оператор with будет недоступен и вероятнее всего также не понадобится этот символ.

Если вы зададите свойству значение true в объекте unscopables сделает его "unscopable" и, следовательно, оно не будет задействовано в области лексических переменных. Придав свойству значение false, Вы сделаете его scopable и, как следствие, оно будет задействовано в области лексических переменных.

Примеры

Приведённый код отлично работает в ES5 и ниже. Однако в ECMAScript 2015 и более поздних версиях был введён метод Array.prototype.keys(). Это означает, что внутри окружения with, "ключи" будут методом, а не переменной. Вот где теперь встроенные свойства символа Array.prototype[@@unscopables] вступают в игру и препятствуют тому, чтобы некоторые из методов Array были включены в оператор with.

var keys = [];

with (Array.prototype) {
  keys.push("что-то");
}

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

Вы также можете задать unscopables для собственных объектов.

var 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
}
Спецификации Совместимость с браузерами Смотрите также

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4