symbol详解
1.symbol概念:数据类型,不是函数,表示不会重复的值
2.for和keyFor
3.symbol作用
定义 let s1 = Symbol('first'); let s2 = Symbol('second'); console.log(s1 === s2) console.log(s1,s2) //重复使用某个唯一的symbol let s1 = Symbol('first'); Symbol.for定义后,会在全局注册一个key-symbol的键值对,后面可以通过key来获取生成的symbol let s2 = Symbol.for('second') let s3 = Symbol('first') let s4 = Symbol.for('second'); let s5 = Symbol.for('first'); console.log(s1 === s3) //false console.log(s2 === s4) //true console.log(s1 === s5) //false Symbol.keyfor通过某个symbol值,获取对应的key值 symbol.for是通过key来找symbol,正好与上面相反 Symbol.keyFor(s1) //undefiend Symbol.keyFor(s2) //second Symbol的使用 继承的时候 let obj = { username:'tom', age:19, sex:'man', username:'mickey' } console.log(obj) ============== let username = Symbol(); let obj = { username:'tom', age:19, sex:'man', [username]:'mickey' } console.log(obj) //symbol不能被for-in/for-of 所遍历,需要reflect来遍历 for(let filed in obj){ console.log(filed) //symbol值不能打印 } for(let [key,value] of Object.entries(obj)){ console.log(key,value); //symbol值不能打印 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?