Symbol
【摘要】
Symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID。
//创建一个Symbol实例let s1 = Symbol()//添加描述let s2 = Symbol('another symbol')//类型typeof s1//'symbol'//唯一s1 === s2//false
使用Symbol来作为对...
Symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID。
-
//创建一个Symbol实例
-
let s1 = Symbol()
-
//添加描述
-
let s2 = Symbol('another symbol')
-
//类型
-
typeof s1//'symbol'
-
//唯一
-
s1 === s2//false
使用Symbol来作为对象属性名(key),Symbol类型的key是不能通过Object.keys()或者for...in来枚举,可以把一些不需要对外操作和访问的属性使用Symbol来定义。
-
let obj={
-
[Symbol('name')]:'xiao',
-
age:18,
-
title:'haha'
-
}
-
Object.keys(obj)//['age','title']
-
for(let p in obj){
-
console.log(p)//依次输出:'age''title'
-
}
-
JSON.stringify(obj)
-
//{"age":18,"title”:"haha"}
使用Symbol来替代常量,保证了常量的值是唯一的。
-
const TYPE_AUDIO = Symbol()
-
const TYPE_VIDEO = Symbol()
-
const TYPE_IMAGE = Symbol()
使用Symbol.for()注册或获取一个window间全局的Symbol实例
-
//注册一个全局Symbol
-
let gs1 = Symbol.for('g_symbol_1')
-
//获取全局Symbol
-
let gs2 = Symbol.for('g_symbol_1')
-
-
gs1 === gs2 //true
文章来源: root181.blog.csdn.net,作者:前端纸飞机,版权归原作者所有,如需转载,请联系作者。
原文链接:root181.blog.csdn.net/article/details/119879419
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
- 点赞
- 收藏
- 关注作者
评论(0)