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 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
jQuery 动画基础教程
Dec 25 Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
Nov 06 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 Javascript
在Vue mounted方法中使用data变量详解
Nov 05 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 Javascript
Vue自定义全局弹窗组件操作
Aug 11 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中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
在Python下尝试多线程编程
2015/04/28 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
Python递归实现打印多重列表代码
2020/02/27 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
Python如何定义接口和抽象类
2020/07/28 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
2014年秋季新学期寄语
2014/08/02 职场文书
办公室主任岗位职责
2015/01/31 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
获奖感言怎么写
2015/07/31 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书