js 数据类型 Symbol
唯一的标识符
有两种原始类型可以作为对象的键(key):1、字符串,2、Symbol()。
用法:
- Symbol('描述') 创建Symbol类型值
- Symbol.description 获取Symbol描述
let id = Symbol('1'); // 括号是描述,即这个标识符的名字,
// 获取描述 id.description // '1'
Symbol('1') === Symbol('1') // false
作用:向对象里添加一个唯一的key名。
“忍者:隐藏属性”
比如第三方代码的对象,你想添加另外的属性,但第三方代码中有可能会设置了本来预设的对象key值,如果你通过Symbol作为key值,就会变成一个“隐藏属性”,就不会被意外访问和重写了
Symbol作为key,即起到隐藏符号属性,会在 for in 以及 Object.keys() 不会被遍历出来。
但是在通过Objcet.assgin(),会同时复制字符串和Symbol的属性
Symbol 全局注册表
- Symbol.for()
通过Symbol.for() 按名字返回一个Symbol 。如果没有将被创建(在注册表中注册),通过描述名就可以取到相同的Symbol了,(查找和创建全局功能)
如果需要取到同一个Symbol,就通过全局注册Symbol.for注册,使用Symbol.for就会获取到同一个Symbol
let id = Symbol.for('id');
let id2 = Symbol.for('id')
id == id2 // true
- Symbol.keyFor()
Symbol.KeyFor()按Symbol返回一个名字。但仅限在全局中查找Symbol,如果在全局中没有则返回Undefined。(不适用于非全局 symbol)
let id = Symbol('id')
let id2 = Symbol.for('id2')
let a = Symbol.keyFor(id) // undefined
let b = Symbol.keyFor(id2) // id2
Your past is not your potential. In any hour you can choose to liberate the future.
你的潜力不在于过去,你随时都可以去解放未来。
本文作者:小赖不赖
本文链接:https://www.cnblogs.com/lazyxlai/p/16862294.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步