在 JavaScript 中,Symbol.unscopables 是一个特殊的内置符号,用于定制对象的属性是否可见。当对象包含 Symbol.unscopables 属性时,相应的属性将不会被包含在 with 语句或 for..in 语句的作用域中。

这个内置符号的作用是为了避免某些属性被意外地覆盖或隐藏。通过在对象中设置 Symbol.unscopables 属性,并指定需要隐藏的属性名称,可以确保这些属性不会在上下文中被误用。

例如,在下面的示例中,我们创建了一个简单的对象 obj,其中包含了一个属性 key,并且设置了 Symbol.unscopables 属性,告诉 JavaScript 引擎在 with 语句中不要将 key 属性加入作用域中。

“`js

const obj = {

key: ‘value’,

[Symbol.unscopables]: {

key: true

}

};

with (obj) {

console.log(key); // undefined

}

“`

通过以上代码我们可以看到,尽管 obj 对象中包含了 key 属性,但是在 with 语句中却无法访问到该属性,这是因为 Symbol.unscopables 属性的设置导致 key 属性被排除在作用域之外。

总的来说,Symbol.unscopables 是一个非常有用的工具,可以帮助开发者更好地控制对象属性的可见性,避免潜在的命名冲突和错误使用。在日常的 JavaScript 编程中,我们可以巧妙地利用 Symbol.unscopables 来提高代码的可靠性和健壮性。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/