码迷,mamicode.com
首页 > 其他好文 > 详细

ES6-07:Symbol数据类型

时间:2017-12-26 00:51:05      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:实例   lock   top   null   foo   fun   tostring   class   ble   

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数据类型

标签:实例   lock   top   null   foo   fun   tostring   class   ble   

原文地址:https://www.cnblogs.com/hbzyin/p/8111770.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!