ES6-07:Symbol数据类型

Posted Jason-str

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6-07:Symbol数据类型相关的知识,希望对你有一定的参考价值。

ES5中规定javascript有6种数据类型:Undefined、Null、String、Boolean、Number、Object;ES6新增加一种数据类型Symbol.

1.symbol定义

  • 原始数据类型:不是对象,不能使用new命令创建,不能添加属性;
  • 表示独一无二的值:
Symbol()===Symbol();//false
Symbol(‘foo‘)===Symbol(‘foo‘);//false
Symbol.for(‘bar‘)===Symbol(‘bar‘);//true
  • symbol值作为属性名时,该属性是公开属性,非私有;
  • symbol作为属性时,不可被遍历;

2. 作用

  • 消除魔术字符串:消除代码内部强耦合;
  • 模块的单利模式:任何时候都返回同一个实例;

    var CAT_KEY=Symbol.for(‘cat‘);
    function Cat(){};
    if(!global[CAT_KEY]){global[CAT_KEY]=new Cat()};

3.内置Symbol值——11个

  • Symbol.hasInstance
  • Symbol.isConcatSpreadable
    -Symbol.species
  • Symbol.match
  • Symbol.replace
  • Symbol.search
  • Symbol.split
  • Symbol.iterator
  • Symbol.toPrimitive
  • Symbol.toStringTag
  • Symbol.unscopable

以上是关于ES6-07:Symbol数据类型的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript数据类型 - Symbol

ES6——Symbol数据类型

JS中的Symbol数据类型

一种新的数据类型Symbol

JavaScriptES6 数据类型:Symbol

JS的基本数据类型symbol