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 相关文章推荐
JavaScript检测上传文件大小的方法
Jul 22 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
js实现二级导航功能
Mar 03 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
Vue3.0结合bootstrap创建多页面应用
May 28 Javascript
Vue2.0实现简单分页及跳转效果
Jul 29 Javascript
js实现多个标题吸顶效果
Jan 08 Javascript
详解vue或uni-app的跨域问题解决方案
Feb 21 Javascript
jquery实现的放大镜效果示例
Feb 24 jQuery
JQuery表单元素取值赋值方法总结
May 12 jQuery
微信小程序 WeUI扩展组件库的入门教程
Apr 21 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安装攻略:常见问题解答(三)
2006/10/09 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
jQuery html()等方法介绍
2009/11/18 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
js模块加载方式浅析
2017/08/12 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
彪马美国官网:PUMA美国
2017/03/09 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
法学求职信
2014/06/22 职场文书
体育课外活动总结
2014/07/08 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL