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中settimeout方法加参数
Feb 28 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
Feb 04 Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 Javascript
bootstrap multiselect 多选功能实现方法
Jun 05 Javascript
Angular模板表单校验方法详解
Aug 11 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
详解JavaScript的变量
Apr 04 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
详解Node.js使用token进行认证的简单示例
May 25 Javascript
antd多选下拉框一行展示的实现方式
Oct 31 Javascript
如何通过简单的代码描述Angular父组件、子组件传值
Apr 07 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
将OICQ数据转成MYSQL数据
2006/10/09 PHP
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
Python深入学习之上下文管理器
2014/08/31 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
文职个人求职信范文
2013/09/23 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python