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的主要内容,如果未能解决你的问题,请参考以下文章

python实现逆波兰计算表达式的代码

EXPORT_SYMBOL使用

谈EXPORT_SYMBOL使用

为啥我们在 C++ 中使用 pos?假设我的代码 int pos = cHash(symbol);

symbol微信小程序怎么调整颜色

EOS 智能合约源代码解读 symbol.hpp