美文网首页
es6-symbol的用法

es6-symbol的用法

作者: 王童孟 | 来源:发表于2018-09-18 11:11 被阅读0次

    Symbol数据类型

    Synmbol 数据类型提供一个独一无二的值。

    Symbol的声明

    {
      // 声明
      let a1=Symbol(); // 这里没有 new
      let a2=Symbol();
      console.log(a1===a2); // false
      let a3=Symbol.for('a3'); // 返回由给定的 key 找到的 symbol,否则就是返回新创建的 symbol
      let a4=Symbol.for('a3');
      console.log(a3, a4, a3===a4); // Symbol(a3) Symbol(a3) true
    }
    

    Symbol的使用

    根据规范,对象属性键只能是string类型或symbol类型,不能是number、boolean,只有string和symbol两种类型。

    {
      let a1=Symbol.for('abc');
      let obj={
        [a1]:'123', 
        'abc':345,
        'c':456
      };
      console.log('obj',obj); // {abc: 345, c: 456, Symbol(abc): "123"}
      // 注意:对象中,symbol 做属性值,通过 for in 和 for of 拿不到属性值
      for(let [key,value] of Object.entries(obj)){
        console.log('let of',key,value); // abc 345 // c 456
      }
    
      Object.getOwnPropertySymbols(obj).forEach(function(item){ // api 结果是数组
        console.log(obj[item]); // 123
      })
    
      Reflect.ownKeys(obj).forEach(function(item){ // api 返回数组包含symbol和非symbol
        console.log('ownkeys',item,obj[item]); // abc 345 c 456 Symbol(abc) 123
      })
    }
    

    相关文章

      网友评论

          本文标题:es6-symbol的用法

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