Symbol

纸飞机 发表于 2021/10/18 23:35:20 2021/10/18
【摘要】 Symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID。 //创建一个Symbol实例let s1 = Symbol()//添加描述let s2 = Symbol('another symbol')//类型typeof s1//'symbol'//唯一s1 === s2//false 使用Symbol来作为对...

Symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID。


  
  1. //创建一个Symbol实例
  2. let s1 = Symbol()
  3. //添加描述
  4. let s2 = Symbol('another symbol')
  5. //类型
  6. typeof s1//'symbol'
  7. //唯一
  8. s1 === s2//false

使用Symbol来作为对象属性名(key),Symbol类型的key是不能通过Object.keys()或者for...in来枚举,可以把一些不需要对外操作和访问的属性使用Symbol来定义。


  
  1. let obj={
  2. [Symbol('name')]:'xiao',
  3. age:18,
  4. title:'haha'
  5. }
  6. Object.keys(obj)//['age','title']
  7. for(let p in obj){
  8. console.log(p)//依次输出:'age''title'
  9. }
  10. JSON.stringify(obj)
  11. //{"age":18,"title”:"haha"}

使用Symbol来替代常量,保证了常量的值是唯一的。


  
  1. const TYPE_AUDIO = Symbol()
  2. const TYPE_VIDEO = Symbol()
  3. const TYPE_IMAGE = Symbol()

使用Symbol.for()注册或获取一个window间全局的Symbol实例


  
  1. //注册一个全局Symbol
  2. let gs1 = Symbol.for('g_symbol_1')
  3. //获取全局Symbol
  4. let gs2 = Symbol.for('g_symbol_1')
  5. gs1 === gs2 //true

文章来源: root181.blog.csdn.net,作者:前端纸飞机,版权归原作者所有,如需转载,请联系作者。

原文链接:root181.blog.csdn.net/article/details/119879419

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。