Array.prototype[@@unscopables] - JavaScript 编辑
Symbol 属性 @@unscopable
包含了所有 ES2015 (ES6) 中新定义的、且并未被更早的 ECMAScript 标准收纳的属性名。这些属性被排除在由 with
语句绑定的环境中。
语法
arr[Symbol.unscopables]
描述
with
绑定中未包含的数组默认属性有:
参考 Symbol.unscopables
以了解如何为自定义的对象设置 unscopables
。
Array.prototype[@@unscopables] 属性的属性特性: | |
---|---|
writable | false |
enumerable | false |
configurable | true |
示例
以下的代码在 ES5 或更早的版本中能正常工作。然而 ECMAScript 2015 (ES6) 或之后的版本中新添加了 Array.prototype.keys()
这个方法。这意味着在 with
语句的作用域中,"keys"只能作为方法,而不能作为某个变量。这正是内置的 @@unscopables
即 Array.prototype[@@unscopables]
symbol 属性所要解决的问题:防止某些数组方法被添加到 with
语句的作用域内。
var keys = [];
with(Array.prototype) {
keys.push("something");
}
Object.keys(Array.prototype[Symbol.unscopables]);
// ["copyWithin", "entries", "fill", "find", "findIndex",
// "includes", "keys", "values"]
规范
规范名称 | 规范状态 | 备注 |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Array.prototype[@@unscopables] | Standard | 首次定义 |
ECMAScript (ECMA-262) Array.prototype[@@unscopables] | Living Standard |
浏览器兼容性
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论