📜  JavaScript | Symbol.unscopables 属性

📅  最后修改于: 2022-05-13 01:56:26.209000             🧑  作者: Mango

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