美文网首页
ES6-Symbol

ES6-Symbol

作者: fb941c99409d | 来源:发表于2020-08-12 20:10 被阅读0次

    ES5中对象的属性名都是字符串,容易造成重名,污染环境
    Symbol: 概念:ES6中的添加了一种原始数据类型symbol(已有的原始数据类型:String, Number, boolean, null, undefined, Object)

    特点

    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属性,指向该对象的默认遍历器方法
    
    
    <script type="text/javascript">
        window.onload = function () {
          let symbol = Symbol();
          console.log(typeof symbol);// symbol
          console.log(symbol);//Symbol()
          
          // 用作对象的属性(唯一)
          let obj = {username: 'kobe', age: 39};
          obj[symbol] = 'hello';
          obj[symbol] = 'symbol';
          console.log(obj); //{username: "kobe", age: 39, Symbol(): "symbol"}
          console.log(obj[symbol]);//symbol
          for(let i in obj){
            console.log(i);//不会遍历 symbol属性
          }
        }
    </script>
    

    相关文章

      网友评论

          本文标题:ES6-Symbol

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