美文网首页
(二)13.Symbol语法19-08-09

(二)13.Symbol语法19-08-09

作者: 你坤儿姐 | 来源:发表于2019-08-09 15:40 被阅读0次
    WechatIMG75.png
    • Symbol的概念
      这种数据类型提供一个独一无二的值
      用这种方式生命的数据变量永远都不会相等,保证它们是唯一的独一无二的
    {
      //声明
      let a1=Symbol();
      let a2=Symbol();
      console.log(a1===a2);
    
      let a3=Symbol.for('a3');
      //这里'a3'相当于一个key值,使用Symbol.for的时候首先查找这个是否定义过,如果定义过就直接取出使用
      let a4=Symbol.for('a3');
      console.log(a3===a4);
    }
    

    打印结果:
    false
    true

    {
      let a1=Symbol.for('abc');
      let obj={
        [a1]:'123',
        'abc':345,
        'c':456
      };
      console.log('obj',obj);
    
     //使用常规的for in和let of是取不到Symbol属性的
      for (let[key,value] of Object.entries(obj)){
        console.log('let of',key,value);
      }
    
      //这是需要使用getOwnPropertySymbols()
      //forEach()是数组的方法
      Object.getOwnPropertySymbols(obj).forEach(function (item) {
        console.log(obj[item]);//这时就能拿到Symbol属性的值了
    })
      //getOwnPropertySymbols()只能拿到Symbol属性的值
      //这里要拿到所有的的值需要使用 Reflect.ownKeys这个属性
      Reflect.ownKeys(obj).forEach(function (item) {
        console.log('ownkeys',item,obj[item]);
      })
    
    }
    

    打印结果:
    obj {abc: 345, c: 456, Symbol(abc): "123"}

    let of abc 345
    let of c 456

    123

    ownkeys abc 345
    ownkeys c 456
    ownkeys Symbol(abc) 123

    • Symbol的作用

    相关文章

      网友评论

          本文标题:(二)13.Symbol语法19-08-09

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