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 相关文章推荐
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
jquery select选中的一个小问题
Oct 11 Javascript
jquery1.4后 jqDrag 拖动 不可用
Feb 06 Javascript
JavaScript事件委托实例分析
May 26 Javascript
JQ实现新浪游戏首页幻灯片
Jul 29 Javascript
Jquery全选与反选点击执行一次的解决方案
Aug 14 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
Apr 26 Javascript
Node.js中DNS模块学习总结
Feb 28 Javascript
webpack项目调试以及独立打包配置文件的方法
Feb 28 Javascript
Vue-router 中hash模式和history模式的区别
Jul 24 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
vue路由对不同界面进行传参及跳转的总结
Apr 20 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
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
全面了解js中的script标签
2016/07/04 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Python 字典dict使用介绍
2014/11/30 Python
Python中的is和id用法分析
2015/01/26 Python
Python+django实现文件上传
2016/01/17 Python
windows系统下Python环境搭建教程
2017/03/28 Python
python实现合并两个排序的链表
2019/03/03 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
社区先进事迹材料
2014/05/19 职场文书
分公司任命书
2014/06/06 职场文书
品质口号大全
2014/06/17 职场文书
中学生爱国演讲稿
2014/09/05 职场文书