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 获取事件对象的注意点
Jul 29 Javascript
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
Jul 28 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
Nov 25 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
jQuery入门之层次选择器实例简析
Dec 11 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
Feb 13 Javascript
利用JS实现简单的瀑布流加载图片效果
Apr 22 Javascript
Node.js中的不安全跳转如何防御详解
Oct 21 Javascript
Js图片点击切换轮播实现代码
Jul 27 Javascript
node.js基础知识汇总
Aug 25 Javascript
vue $mount 和 el的区别说明
Sep 11 Javascript
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
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
深入浅析php json 格式控制
2015/12/24 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
Javascript 对象的解释
2008/11/24 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现批量改文件名称的方法
2015/05/25 Python
django加载本地html的方法
2018/05/27 Python
python 解压pkl文件的方法
2018/10/25 Python
python获取中文字符串长度的方法
2018/11/14 Python
Python  Django 母版和继承解析
2019/08/09 Python
python操作cfg配置文件方式
2019/12/22 Python
Python socket聊天脚本代码实例
2020/01/02 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
泰国网上购物:Shopee泰国
2018/09/14 全球购物
《植物妈妈有办法》教学反思
2014/02/25 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
药剂专业自荐书
2014/06/20 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
财务整改报告范文
2014/11/05 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
Java界面编程实现界面跳转
2022/06/16 Java/Android
一文搞懂Java中的注解和反射
2022/06/21 Java/Android