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 相关文章推荐
理解Javascript_11_constructor实现原理
Oct 18 Javascript
javascript实现平滑无缝滚动
Aug 09 Javascript
原生JS实现图片轮播与淡入效果的简单实例
Aug 21 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
vue组件实例解析
Jan 10 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 Javascript
cocos2dx+lua实现橡皮擦功能
Dec 20 Javascript
浅谈webpack性能榨汁机(打包速度优化)
Jan 09 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
May 07 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
Oct 28 Javascript
vue 扩展现有组件的操作
Aug 14 Javascript
jQuery实现动态加载瀑布流
Sep 01 jQuery
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 邮件发送问题解决
2014/03/22 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
从零学python系列之从文件读取和保存数据
2014/05/23 Python
Python循环语句中else的用法总结
2016/09/11 Python
python正则表达式之对号入座篇
2018/07/24 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
pymysql模块使用简介与示例
2020/11/17 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
自我鉴定怎么写
2014/01/12 职场文书
不假外出检讨书
2014/01/27 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
2014年班务工作总结
2014/12/02 职场文书
质量保证书
2015/01/17 职场文书
校园广播稿范文
2015/08/19 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android