首页 / ES6 / ES6——Symbol
ES6——Symbol
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ES6——Symbol,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1252字,纯文字阅读大概需要2分钟。
内容图文
原始数据类型,表示独一无二的值
let sy = Symbol(‘kk‘)
console.log(sy) //Symbol(kk)
typeof(sy) //‘Symbol‘
相同参数 Symbol() 返回的值不相等
let sy1 = Symbol(‘kk‘)
sy == sy1 //false
-
用做属性名
每一个 Symbol 的值是不相等的,保证属性名不重复
//方法1 let sy = Symbol(‘key1‘) let obj = {} obj[sy] = ‘kk‘ console.log(obj) //{Symbol(key1):‘kk‘} //方法2 let obj = { [sy]: ‘kk‘ } //方法3 Object.defineProperty(obj,sy,{value:‘kk‘})
注 : Symbol 作为对象属性名不能用点运算符,必须用方括号
Symbol 作为属性名,该属性为共有属性,可在类的外部访问,但不会出现在
for...in
,for...of
循环中,也不会被Object.keys()
Object.getOwnPropertyNames()
返回。但可通Object.getOwnPropertySymbols()
和Reflect.ownKeys()
取到let sy = Symbol(‘key1‘) let obj = { [sy]: ‘kk‘ } for(let i in obj){ //不会进入循环 console.log(i) } console.log(Object.keys(obj)) //[] console.log(Object.getOwnPropertySymbols(obj)) //[Symbol(key1)] console.log(Reflect.ownKeys(obj)) //[Symbol(key1)]
-
方法
-
Symbol.for()
首先在全局搜索被登记的Symbol中是否有该字符串参数作为名称的 Symbol 值,如果有即返回 Symbol 值,若没有则新建并返回一个以该字符串参数为名称的 Symbol 值并登记在全局中供搜索
let sy = Symbol(‘kk‘) let sy2 = Symbol.for(‘kk‘) sy == sy2 //false let s3 = Symbol.for(‘kk‘) sy2 == sy3 //true
注 : 初始化的 Symbol 的变量并不会在全局中登记
-
Symbol.keyFor()
返回一个已登记的 Symbol 类型值的 key ,用来检测该字符串参数作为名称的 Symbol 值是否已被登记。
Symbol.keyFor(sy) //undefined Symbol.sy2(sy2) //‘kk‘
-
原文:https://www.cnblogs.com/angle-yan/p/13371312.html
内容总结
以上是互联网集市为您收集整理的ES6——Symbol全部内容,希望文章能够帮你解决ES6——Symbol所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。