JavaScript | Symbol.unscopables 属性
Javascript 中的Symbol.unscopables属性是一个众所周知的符号,用于指定一个对象值,其自身和继承的属性名称被排除在环境绑定之外。
句法:
object[Symbol.unscopables]
属性属性:该属性包含一个对象,它不是可写、可枚举和可配置的。
返回值:检查变量是否出现在词法范围变量中。
下面的示例说明了 JavaScript 中的Symbol.unscopables 属性:
示例 1:如果所有属性都设置为 false。
// JavaScript to illustrate Symbol.toPrimitive
var obj1 = {
val: "Have",
val1: "FUN"
};
obj1[Symbol.unscopables] = {
val1: false,
val: false
};
with (obj1) {
console.log(val1);
}
with (obj1) {
console.log(val);
}
输出:
> "FUN"
> "Have"
示例 2:如果任何属性设置为 true。
// JavaScript to illustrate Symbol.toPrimitive
var obj1 = {
val: "Have",
val1: "FUN"
};
obj1[Symbol.unscopables] = {
val1: false,
val: true
};
with (obj1) {
console.log(val1);
}
with (obj1) {
console.log(val);
}
输出:
"FUN"
Error: val is not defined
示例 3:
var list = [];
with (Array.prototype) {
list.push('unscopables');
}
console.log(Object.keys(Array.prototype[Symbol.unscopables]));
输出:
[
'copyWithin', 'entries',
'fill', 'find',
'findIndex', 'flat',
'flatMap', 'includes',
'keys', 'values'
]
支持的浏览器: JavaScript Symbol.unscopables 属性支持的浏览器如下:
- 谷歌浏览器 45
- 边缘 12 及以上
- 火狐 48 及以上
- Opera 32 及以上
- Safari 9 及更高版本
参考: https://devdocs.io/javascript/global_objects/symbol/unscopables