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 jQuery插件练习
Dec 24 Javascript
JS 实现导航栏悬停效果(续2)
Sep 24 Javascript
Extjs4中Form的使用之本地hiddenfield
Nov 26 Javascript
JavaScript数组常用操作技巧汇总
Nov 17 Javascript
jQuery实现手机上输入后隐藏键盘功能
Jan 04 Javascript
基本DOM节点操作
Jan 17 Javascript
vue动态删除从数据库倒入列表的某一条方法
Sep 29 Javascript
JavaScript实现的九种排序算法
Mar 04 Javascript
浅谈js闭包理解
Mar 28 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
Sep 11 Javascript
微信小程序实现分页加载效果
Nov 19 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
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
Python selenium 三种等待方式解读
2016/09/15 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
大学活动邀请函
2014/01/28 职场文书
语文教学感言
2014/02/06 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
宣传工作经验材料
2014/06/02 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
小学毕业感言100字
2015/07/30 职场文书
会计入职心得体会
2016/01/22 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
Redis+AOP+自定义注解实现限流
2022/06/28 Redis