ES6概念 ymbol.for()方法


Posted in Javascript onDecember 25, 2016

Symbol.for()方法:
使用Symbol()方法可以创建一个Symbol类型的值。
代码实例如下:

let s = Symbol();
let one = Symbol("三水点靠木");
let two = Symbol("三水点靠木");
console.log(one == two);

即便是键值相同两个Symbol类型的值也是不相同的。
更多关于Symbol的内容可以参阅ES2015 Symbol一章节。
使用Symbol.for()方法也可以创建一个Symbol类型的值,但是此方法和Symbol()的一个重要区别是,它不会重复创建具有相同键的值,也就是说此方法在创建一个值之前,首先会搜索是否已经具有指定键的Symbol类型的值,如果有则返回这个Symbol值,否则新创建一个Symbol值。
代码实例:

let one = Symbol.for("三水点靠木");
let two = Symbol.for("三水点靠木");
console.log(typeof one);
console.log(one == two);

第一次调用Symbol.for()方法会创建一个键值为"三水点靠木"的Symbol类型的值。
第二次调用的时候会搜索是否已经存在以"三水点靠木"为键的Symbol类型的值,如果存在就返回这个Symbol值。

let one = Symbol.for();
let two = Symbol.for();
console.log(typeof one);
console.log(one == two);

不传递参数也是同样的道理。

let one = Symbol("三水点靠木");
let two = Symbol.for("三水点靠木");
console.log(one == two);

Symbol.for()创建的值会被登记在全局环境中供搜索,而Symbol()创建的值不会,所以Symbol.for("三水点靠木")依然会新创建一个Symbol值,而不是返回Symbol("三水点靠木")创建的值。

Javascript 相关文章推荐
extJs 常用到的增,删,改,查操作代码
Dec 28 Javascript
Knockoutjs快速入门(经典)
Dec 24 Javascript
JS简单的轮播的图片滚动实例
Jun 17 Javascript
JavaScript Promise启示录
Aug 12 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
Vue Element使用icon图标教程详解(第三方)
Feb 07 Javascript
webpack4的迁移的使用方法
May 25 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
Nov 28 Javascript
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
ES2015 Symbol 一种绝不重复的值
Dec 25 #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
You might like
php.ini中文版
2006/10/09 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
python创建文件备份的脚本
2018/09/11 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
Django实现文件上传下载
2019/10/06 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
新娘父亲婚礼致辞
2014/01/16 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
整理Python中常用的conda命令操作
2021/06/15 Python