Symbol
Posted 纸 飞机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Symbol的主要内容,如果未能解决你的问题,请参考以下文章