symbol访问法及symbor注册表
symbol主要作用是防止对象属性名冲突
在ES6之前,对象的属性名只能是字符串,这样很容易造成字符串的冲突。
例:假设person对象是从外部库引入的一个对象
let person = {
name: 'xiaoqian',
age : 18
}
console.log(person.name);// xiaoqian
person.name = 'xiaojia';
console.log(person.name);// xiaojia
在不同的代码共享一个symbol,可使用symbo. for()方法来创建一个共享的symbo。
ES6提供了一个可随时访问的全局symbol注册表。当使用symbol.for()方法注册一个symbol的时候,系统会首先在全局表里查找对应的参数的symbol是否存在,如果存在 ,直接返回已有的symbol,如果不存在,则在全局表里面创建一个新的symbol。
例:
let obj = {};
let name = symbol.for('test');
obj[name] = 'xiaoqian';
let name 2 = symbol.for('test');
console.log(obj[name2]);// xiaoqian
注意:即使使用symbol.for()方法创建symbol时没有传递任何参数,也会将undefined作为全局表里面的键来进行注册。
例:
let obj = {};
let name = symbol.for();
obj[name] = 'xiaoqian';
let name 2 = symbol.for(undefined);
console.log(obj[name2]);// xiaoqian
后续有时间再补充创建symbol及symbol.keyfor()方法等~~
symbol访问法及symbor注册表的更多相关文章
- C# 32位程序访问64位系统注册表
原文:C# 32位程序访问64位系统注册表 我的上一篇文章已经阐述了“32位程序和64位程序在64位平台上读\写注册表的区别”,那么接下来将要回答上篇所留下来的一个问题:32位程序如何访问64位系统注 ...
- 关于64位操作系统使用C#访问注册表失败的问题
通过C#的注册表类 Registry.GetValue 进行访问时,其返回值一直为空.然后认真检查检查再检查了注册表路径,发现路径没有一点问题,不说废话,上代码: if (Registry.GetVa ...
- ArcGIS AddIN开发之COM对象写入注册表
做一个交互式绘制文字的工具,希望这次设置的Symbol,下次打开ArcMap时自动调用这个Symbol,并支持对其进行修改. 解决方法是将这个Symbol写入注册表中,每次自动读取上一次设置的Symb ...
- c#_自动化测试 (五) 读写64位操作系统的注册表
非Web程序(桌面程序)的设置一般都存在注册表中. 给这些程序做自动化测试时, 需要经常要跟注册表打交道. 通过修改注册表来修改程序的设置. 本章介绍如何利用C#程序如何操作注册表, 特别是如何操作6 ...
- 64位WINDOWS系统环境下应用软件开发的兼容性问题(CPU 注册表 目录)
应用软件开发的64 位WINDOWS 系统环境兼容性 1. 64 位CPU 硬件 目前的64位CPU分为两类:x64和IA64.x64的全称是x86-64,从名字上也可以看出来它和 x86是兼容的,原 ...
- Windows注册表的基本知识及应用
转帖:Windows注册表的基本知识及应用 2009-12-23 11:30:56 分类: Windows注册表的基本知识及应用 一.注册表的重要性 在DOS年代,对计算机的内存管理及系统配置主要通 ...
- C#对注册表的操作
C#中提供的与注册表相关的最主要的是两个类: Registry 和 RegistryKey,这两个类属于Microsoft.Win32命名空间 Registry类包含5个公共的静态域,分别代表5个基本 ...
- 对Jscript操作注册表接口的一点不解
作者:朱金灿 来源:http://blog.csdn.net/clever101 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作.Wshshell ...
- Win64 驱动内核编程-6.内核里操作注册表
内核里操作注册表 RING0 操作注册表和 RING3 的区别也不大,同样是"获得句柄->执行操作->关闭句柄"的模式,同样也只能使用内核 API 不能使用 WIN32 ...
随机推荐
- CentOS7安装wget 及配置
yum -y install wget yum -y install setup yum -y install perl
- 全球知名的HTTPS网站检测工具-Qualys SSL Labs
推荐一个在线版全球知名的HTTPS网站检测工具-Qualys SSL Labs.Qualys SSL Labs同时也是很具有影响力的SSL安全和性能研究机构. SSL Labs会对HTTPS网站的证书 ...
- Java-API:java.util.map
ylbtech-Java-API:java.util.map compact1, compact2, compact3 java.util Interface Map<K,V> Type ...
- __thiscalll C++底层识别成员函数
问题描述: class myClass { public: void SetNumber(int nNumber) { m_nInt = nNumber; } private: int m_nInt; ...
- 【转】ruby中nil?, empty? and blank?的选择
In Ruby, you check with nil? if an object is nil:article = nil article.nil? # => true empty? chec ...
- django的settings.py设置static
DEBUG = True ################ STATICFILES ################ # A list of locations of additional stati ...
- spring @Resource与@Autowired注解详解
具有依赖关系的Bean对象,利用下面任意一种注解都可以实现关系注入: 1)@Resource (默认首先按名称匹配注入,然后类型匹配注入) 2)@Autowired/@Qualifier (默认按类型 ...
- Navicat断网时连不上数据库
最近安装了破解的Navicat,在有网的条件下可以连接本地安装的MySQL数据库,但断网之后就不可以,如下: 于是上网查资料,发现原因为: localhost可以看成是一个域名,在一大部分情况下,它能 ...
- zookeeper 安装配置注意事项
zoo.cfg 1.server.1/2/3 有几台配置几个 2.配置好hosts映射之后可以用node1替代IP地址 3.dataLogDir 下面配置的logs 的目录一定要创建 4.dat ...
- adb eclipse 截屏
DDMS 左侧 选中设备 右上角有一个相机样式的按钮"screen capture"