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嵌套函数及闭包
Nov 09 Javascript
javascript中input中readonly和disabled区别介绍
Oct 23 Javascript
JavaScript实现页面实时显示当前时间的简单实例
Jul 20 Javascript
js动态设置鼠标事件示例代码
Oct 30 Javascript
用window.onerror捕获并上报Js错误的方法
Jan 27 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
vue构建单页面应用实战
Apr 10 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
Web应用开发TypeScript使用详解
May 25 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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php 获取客户端的真实ip
2009/11/30 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
《三顾茅庐》教学反思
2014/04/10 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
幽灵公主观后感
2015/06/09 职场文书
优秀志愿者感言
2015/08/01 职场文书
2016年万圣节活动总结
2016/04/05 职场文书