Symbol

作者: 牛耀 | 来源:发表于2018-09-26 23:00 被阅读0次

    前言:ES5中对象的属性名都是字符串,容易造成重名,污染环境
    概念:ES6中的添加了一种原始数据类型symbol(已有的原始数据类型:String, Number, boolean, null, undefined, 对象)
    特点:
    1、Symbol属性对应的值是唯一的,解决命名冲突问题
    2、Symbol值不能与其他数据进行计算,包括同字符串拼串
    3、for in, for of遍历时不会遍历symbol属性。
    使用:
    1、调用Symbol函数得到symbol值
    let symbol = Symbol();
    let obj = {};
    obj[symbol] = 'hello';
    2、传参标识
    let symbol = Symbol('one');
    let symbol2 = Symbol('two');
    console.log(symbol);// Symbol('one')
    console.log(symbol2);// Symbol('two')
    3、内置Symbol值
    * 除了定义自己使用的Symbol值以外,ES6还提供了11个内置的Symbol值,指向语言内部使用的方法。
    - Symbol.iterator
    * 对象的Symbol.iterator属性,指向该对象的默认遍历器方法

     //创建symbol属性值
        let symbol = Symbol();
        console.log(symbol);
        let obj = {username: 'kobe', age: 40};
        obj.sex = '男';
        obj[symbol] = 'hello';
        console.log(obj);
        //for in、for of不能遍历symbol属性
        for(let i in obj){
            console.log(i);
        }
        let symbol2 = Symbol('one');
        let symbol3 = Symbol('two');
        console.log(symbol2 == symbol3);
        console.log(symbol2,symbol3);
        //可以去定义常量
        const Person_key = Symbol('person_key');
        console.log(Person_key);
    

    相关文章

      网友评论

          本文标题:Symbol

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