es6学习笔记整理(八)Symbol的用法
admin
2023-08-15 20:58:47
0

Symbol数据类型 概念:这种数据类型提供一个独一无二的值,也就是说Symbol声明的变量a和变量b永远不可能相等。
声明

let a = Symbol(); let b = Symbol(); console.log(a === b); //false

它自己都不会等于它自己
Symbol.for
let c = Symbol.for("aaa"); let d = Symbol.for("aaa"); console.log(c === d); //true

【es6学习笔记整理(八)Symbol的用法】Symbol.for和Symbol的唯一区别是 Symbol.for创建的两个实例可能相等, 根据Symbol的参数生成实例, 如果参数一样, 那么会返回同一个实例。
看到这里,还完全不知道要怎么使用,不急不急,接下来。。。
使用:
let a = Symbol.for('abc'); let obj = { [a]:'111', 'abc':222, 'b':333 }; console.log('obj',obj); //{abc: 222, b: 333, Symbol(abc): "111"} console.log(Symbol.keyFor(a)); // abc 检索字符串键

这种使用就可以避免对象中键值相同替换的问题
但是这样使用会有一个问题,对象中使用Symbol做键值,通过for in 和 let of是拿不到那个属性。
···
for(let [key,value] of Object.entries(obj)){
console.log('entries',key,value); //abc 222; b 333
}
···
解决方法: Object.getOwnPropertySymbol()返回值是数组, 但是这个只能打印出Symbol做键值的值,这就尴尬了,下面使用reflect.ownKeys来解决这个问题
Object.getOwnPropertySymbols(obj).forEach(function (item) { console.log('getOwnPropertySymbols', obj[item]); //111 });

reflect.ownKeys()返回的也是数组
Reflect.ownKeys(obj).forEach(function (item){ console.log('ownKeys', item, obj[item]); /*ownKeys abc 222 * ownKeys b 333 * ownKeys Symbol(abc) 111 * */ });

到这里也感觉了解甚浅,后面有机会补充。

相关内容

热门资讯

a... 本文目录导航: abaqus振动照应剖析中处罚力的加载方法 abaqus反...
a... 本文目录导航: abaqus资料可以不设置参数吗 abaqus外面没有自带...
A... 本文目录导航: ANSYS Workbench中二维平面剖析的设置。 an...
h... 本文目录导航: hfss19.2允许win11吗 微带如何假负载 ...
a... 本文目录导航: ansys模流剖析用哪个模块 Ansys_workbenc...
v... 本文目录导航: 在ansys中,建好几何模型后,随意变动一下视图,旋转、加大、增加,Fit...
A... 本文目录导航: Ansys软件可以收费试用吗? ansys有哪些软件 ...
a... 本文目录导航: abaqus中如何同时关上两个cae文件? abaqus找...
a... 本文目录导航: ansys流体剖析迭代次数可以中止嘛 Ansys Flot...
这... 本文目录导航: 哪位大佬有 Fluent14.5流场剖析从入门到知晓,这种百度网盘资源的链...
经... 双击D2进入System Coupling的设置,在Solution上右击选用Clear Gener...
a... 本文目录导航: ansys软件引见 ansys有哪些软件 ...
a... 本文目录导航: abaqus系列技巧18:聊聊abaqus云图外面的魔术加大镜--缩放倍数...
a... 本文目录导航: abaqus中网格不可绘制 abaqus结果可视化某个部件...
a... 本文目录导航: abaqus结果可视化某个部件云图只显示网格接壤处的? a...
驳... 本文目录导航: ABAQUS中假设选择施加的载荷类型为pressure,对应的载荷单位应该...
a... 本文目录导航: abaqus2020旋转不了物体 怎样判别abaqus转的...
在... 本文目录导航: 在abaqus中如何删除一个单元 ABAQUS怎样删除网格...
它... 本文目录导航: abaqus为什么叫abaqus,它是那些词的简称么?全称是什么呢? ...
披着“现货订购”外衣的非法期货...   近期,甘肃西北商品交易市场有限公司旗下的“铂银掘金APP”引发大量投资者集中维权。该平台打着“低...