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 相关文章推荐
JavaScript实现快速排序(自已编写)
Dec 19 Javascript
require.js深入了解 require.js特性介绍
Sep 04 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
Dec 03 Javascript
基于jQuery实现文字打印动态效果
Apr 21 jQuery
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
weui框架实现上传、预览和删除图片功能代码
Aug 24 Javascript
JavaScript+CSS相册特效实例代码
Sep 07 Javascript
Vuejs 单文件组件实例详解
Feb 09 Javascript
微信小程序结合Storage实现搜索历史效果
May 18 Javascript
详解如何提升JSON.stringify()的性能
Jun 12 Javascript
javascript+css实现进度条效果
Mar 25 Javascript
vue等两个接口都返回结果再执行下一步的实例
Sep 08 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
python笔记(2)
2012/10/24 Python
在Python的web框架中配置app的教程
2015/04/30 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
python代码中怎么换行
2020/06/17 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
财务工作者先进事迹材料
2014/01/17 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书