当前位置 博文首页 > 纸飞机博客:Symbol

    纸飞机博客:Symbol

    作者:[db:作者] 时间:2021-09-07 10:07

    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
    cs
    下一篇:没有了