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 相关文章推荐
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
JS实现模仿微博发布效果实例代码
Dec 16 Javascript
js实现键盘Enter键提交表单的方法
May 27 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
May 19 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
js for循环倒序输出数组元素的实例
Mar 01 Javascript
vue组件间通信解析
Mar 01 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 Javascript
webpack.DefinePlugin与cross-env区别详解
Feb 23 Javascript
JS Array.from()将伪数组转换成数组的方法示例
Mar 23 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
DSP接收机前端设想
2021/03/02 无线电
PHP脚本的10个技巧(8)
2006/10/09 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
jQuery检测某个元素是否存在代码分享
2015/07/09 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
python3使用urllib模块制作网络爬虫
2016/04/08 Python
Python面向对象特殊成员
2017/04/24 Python
Python3中的json模块使用详解
2018/05/05 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python 连续不等式语法糖实例
2020/04/15 Python
为什么称python为胶水语言
2020/06/16 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
烹调加工管理制度
2014/02/04 职场文书
小学社团活动总结
2014/06/27 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
计生个人工作总结
2015/02/28 职场文书
小学教师岗位职责
2015/04/02 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python