Symbol

作者: 这很重要吗 | 来源:发表于2017-06-10 16:17 被阅读0次

    Symbol概念##

    ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型。
    Symbol 值通过Symbol()函数生成。
    这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

    image.png image.png

    注意,Symbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。

    // 没有参数的情况
    var s1 = Symbol();
    var s2 = Symbol();
    
    s1 === s2 // false
    
    // 有参数的情况
    var s1 = Symbol('foo');
    var s2 = Symbol('foo');
    
    s1 === s2 // false
    

    Symbol.for()Symbol()这两种写法,都会生成新的Symbol。它们的区别是,前者会被登记在全局环境中供搜索,后者不会。
    Symbol.keyFor方法返回一个已登记的 Symbol 类型值的key。

    var s1 = Symbol.for("foo");
    Symbol.keyFor(s1) // "foo"
    
    var s2 = Symbol("foo");
    Symbol.keyFor(s2) // undefined
    

    相关文章

      网友评论

          本文标题:Symbol

          本文链接:https://www.haomeiwen.com/subject/lqiqqxtx.html