阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS Array.prototype[@@unscopables]

      Symbol属性 @@unscopable 包含了所有 ES2015 (ES6) 中新定义的且并未被更早的 ECMAScript 标准收纳的属性名。

      这些属性并不包含在 with 语句绑定的环境中

      语法

      arr[Symbol.unscopables]
      

      描述

      with 绑定中未包含的数组默认属性有:copyWithin, entries, fill, find, findIndex, includes, keys 和 values。

      查看 Symbol.unscopables 以了解如何给你定义的对象设置 unscopables。

      Array.prototype[@@unscopables] 属性的属性特性:-
      writablefalse
      enumerablefalse
      configurabletrue

      示例

      以下的代码在 ES5 或更早的版本中能正常工作。然而 ECMAScript 2015 (ES6) 或之后的版本中新添加了 Array.prototype.keys() 这个方法。这意味着在 with 语句的作用域,“keys"只能作为方法而不能作为某个变量。这正是内置的 @@unscopablesArray.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 Latest Draft (ECMA-262) Array.prototype[@@unscopables]Draft 

      相关链接

      目录
      目录