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 相关文章推荐
utf8的编码算法 转载
Dec 27 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
js抽奖实现随机抽奖代码效果
Dec 02 Javascript
Vue.js快速入门教程
Sep 07 Javascript
bootstrap使用validate实现简单校验功能
Dec 02 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
Mar 21 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
浅谈在node.js进入文件目录的问题
May 13 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
ES6入门教程之变量的解构赋值详解
Apr 13 Javascript
微信小程序实现录音功能
Nov 22 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/07/05 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
"引用"与指针的区别是什么
2016/09/07 面试题
如何删除一个表里面的重复行
2013/07/13 面试题
《两个铁球同时着地》教学反思
2014/02/13 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
2014年采购部工作总结
2014/11/20 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
深入详解JS函数的柯里化
2021/06/09 Javascript
如何利用python创作字符画
2022/06/25 Python