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 相关文章推荐
ExtJs之带图片的下拉列表框插件
Mar 04 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
Aug 15 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
May 27 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
js验证框架之RealyEasy验证详解
Jun 08 Javascript
Javascript typeof与instanceof的区别
Oct 18 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
Jan 05 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
Jan 11 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
基于JavaScript 实现拖放功能
Sep 12 Javascript
node静态服务器实现静态读取文件或文件夹
Dec 03 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
基于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
用libtemplate实现静态网页生成
2006/10/09 PHP
第七节--类的静态成员
2006/11/16 PHP
php 无限极分类
2008/03/27 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
php获取excel文件数据
2017/04/21 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
python中enumerate的用法实例解析
2014/08/18 Python
让python在hadoop上跑起来
2016/01/27 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
用python绘制樱花树
2020/10/09 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
运动会跳远广播稿
2014/02/04 职场文书
道路建设实施方案
2014/03/18 职场文书
学生会主席演讲稿
2014/04/25 职场文书
工程款申请报告
2015/05/15 职场文书
离婚协议书格式范本
2016/03/18 职场文书