ШиÑоко извеÑÑнÑй Ñимвол 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