ES2015 Symbol 一种绝不重复的值


Posted in Javascript onDecember 25, 2016

ES2015 Symbol:
Symbol是ES2015新增的一种值类型数据,表示一种绝不重复的值。
关于数据类型可以参阅javascript引用类型和基本类型详解一章节。

代码实例如下:

let sVal = Symbol();
console.log(typeof sVal)

上面的代码的输出值是"symbol"。
使用Symbol()函数可以创建一个symbol类型值。
特别说明:前面不能使用new,否则会报错;因为Symbol是一种值类型数据,这也是很好理解的。
Symbol()函数可以接受一个字符串作为参数,用作Symbol值的描述,也可以理解为键(key),代码实例如下:

let s1 = Symbol("三水点靠木");
let s2 = Symbol("ww.3water.com";

键的作用就是为了便于区分不同的Symbol类型的值,代码实例如下:

let s1 = Symbol("三水点靠木");
let s2 = Symbol("3water.com");
console.log(s1.toString());
console.log(s2.toString());

通过键就可以比较方便的区分两个Symbol值。
键相同的两个Symbol值并不相同:

let s1 = Symbol("三水点靠木");
let s2 = Symbol("三水点靠木");
console.log(s1 == s2);

上面两个Symbol值是不相等的。
Symbol值不能够被隐式转换为字符串类型,代码实例如下:

let s = Symbol("三水点靠木");
//报错
`antzone ${sym}`
//报错
"antzone" + sym

上面代码试图将Symbol隐式转换字符串会报错。
但是我们可以显式将其转换为字符串类型,代码实例如下:

let s = Symbol("三水点靠木");
console.log(s.toString());

Symbol类型方法和属性:
方法列表如下:

方法 描述
Symbol.for() 创建一个Symbol类型的值,但是不会重复创建键值相同的Symbol类型的值。
Symbol.keyFor() 获取对应Symbol值的键。
Symbol.prototype.toString() 返回当前symbol对象的字符串表示。

属性列表如下:
方法 描述
Symbol.iterator 内置Symbol值,作为对象属性会指向一个遍历器接口。
Symbol.match
Symbol.prototype
Symbol.species
Symbol.toPrimitive
Javascript 相关文章推荐
jQuery 各种浏览器下获得日期区别
Dec 22 Javascript
javascript 面向对象编程基础 多态
Aug 21 Javascript
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
jQuery在html有效在jsp无效的原因及解决方法
Aug 02 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
Apr 16 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
May 15 Javascript
JS实现简单抖动效果
Jun 01 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 #Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 #Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 #Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
Dec 25 #Javascript
AngularJS入门教程之Helloworld示例
Dec 25 #Javascript
jQuery实现圣诞节礼物动画案例解析
Dec 25 #Javascript
AngularJS打开页面隐藏显示表达式用法示例
Dec 25 #Javascript
You might like
PHP生成静态页
2006/11/25 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
js数组操作常用方法
2014/05/08 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
使用Python如何测试InnoDB与MyISAM的读写性能
2018/09/18 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
Python 切分数组实例解析
2019/11/07 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
python实现程序重启和系统重启方式
2020/04/16 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
公司部门司机岗位职责
2014/01/03 职场文书
文明社区申报材料
2014/08/21 职场文书
英语导游词
2015/02/13 职场文书
教师旷工检讨书
2015/08/15 职场文书
2016年端午节寄语
2015/12/04 职场文书