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 相关文章推荐
JQuery select标签操作代码段
May 16 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
Oct 20 Javascript
表单元素与非表单元素刷新区别详细解析
Nov 06 Javascript
javascript禁制后退键(Backspace)实例代码
Nov 15 Javascript
用js实现放大镜的效果的简单实例
May 23 Javascript
详细讲解JavaScript中的this绑定
Oct 10 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 Javascript
Vue实现跑马灯效果
May 25 Javascript
解决vue addRoutes不生效问题
Aug 04 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+xslt在windows平台上
2006/10/09 PHP
php常用hash加密函数
2014/11/22 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
MooTools 1.2介绍
2009/09/14 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python和opencv实现抠图
2018/07/18 Python
python中get和post有什么区别
2020/06/19 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
送给他或她的礼物:FUN.com
2018/08/17 全球购物
Ajax和javascript的区别
2013/07/20 面试题
大学校运会广播稿
2014/02/03 职场文书
西式婚礼主持词
2014/03/13 职场文书
研讨会致辞
2015/07/31 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书