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 ...
随机推荐
- Oracle中查询前10条记录
在Oracle怎样查询表中的top10条记录呢? select * from test where rownum <=10 ----说明:rownum只能用于<或<=运算,如 ...
- SQL Server 学习系列之四(SQL 内幕)
SQL Server 学习系列之四(SQL 内幕) SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL ...
- (C#)把磁盘目录树加载在窗体菜单中
这又是一个没有技术含量的代码.写出来只是玩玩,所以也不敢放在首页. 这里有个问题,是获取文件/文件夹的图标.使用 System.Drawing.Icon.ExtractAssociatedIcon 只 ...
- Linux 终端 忽略大小写
忘了在哪里看到的了,记录一下. 在-/.inputrc中加入一行 set completion-ignore-case on 搞定! 这样在终端输入.补全时就忽略大小写了.当然,Linux本身还是区分 ...
- Python获取%appdata%路径的方法
import osimport sys import winreg print(os.name)print(sys.getdefaultencoding())print(sys.version)pri ...
- 编译使用CEF2623遇到的错误解决办法
https://cmake.org/download/win10的同学注意了按右键以管理员模式启动cmake-gui.exe在Where is the source code:里填上你解压的CEF3路 ...
- git revert reset
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit. git reset 是把HEAD向后移动了一下,而git revert是HEAD ...
- 存储过程错误异常处理例子 --> DECLARE EXIT HANDLER FOR SQLEXCEPTION (转)
刚才一个朋友问到: mysql 有类似 mssql 退出执行的方法不? 比如我执行到某个条件,下面就终止执行了. 想起以前写的存储过程,找了好久才找到,就发给他,希望对他有所帮助,贴在这里,留作 ...
- php用zendstudio建立wsdl
首先,新建的时候要选择soap,然后deocument和rpc都可以. 类和方法的页面: <?php //发货接口 class test{ function send_do_delivery($ ...
- kubernetes 学习 创建cronjob
POM.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...