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 相关文章推荐
js 新浪的一个图片播放图片轮换效果代码
Jul 15 Javascript
eclipse如何忽略js文件报错(附图)
Oct 30 Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 Javascript
jQuery中DOM操作实例分析
Jan 23 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
如何使用Bootstrap 按钮实例详解
Mar 29 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
js使用原型对象(prototype)需要注意的地方
Aug 28 Javascript
javascript 判断用户有没有操作页面
Oct 17 Javascript
常用的 JS 排序算法 整理版
Apr 05 Javascript
vue实现动态显示与隐藏底部导航的方法分析
Feb 11 Javascript
Vue组件系列开发之模态框
Apr 18 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实现在服务器端调整图片大小的方法
2015/06/16 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
Python中基础的socket编程实战攻略
2016/06/01 Python
Python正规则表达式学习指南
2016/08/02 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
教师档案管理制度
2014/01/23 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
cf收人广告词大全
2014/03/14 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
2015年读书月活动总结
2015/03/26 职场文书
药店营业员岗位职责
2015/04/14 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
乱世佳人观后感
2015/06/08 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
JavaScript实现队列结构过程
2021/12/06 Javascript