es6之Symbol

Symbol可以单独定义,值不会相等

{
    //声明
    let a1=Symbol();
    let a2=Symbol();
    console.log("Symbol",a1===a2);  //false false
    let a3=Symbol.for("a3");
    let a4=Symbol.for("a3");
    console.log(a3===a4) //true

}
{
    let a1=Symbol.for("abc");
    let obj={
        [a1]:"123",
        "abc":345,
        "c":456
    }
    console.log(obj); 

    //for of 取不到key value值
    for(let [key,value] of Object.entries(obj)){
        console.log("let of",key,value);

    }
    //获取Symbol定义的key值
    Object.getOwnPropertySymbols(obj).forEach(function(item){
        console.log("symbolKey",obj[item]);  //123
    })
    //获取所有的,包括Symbol定义的key value值
    Reflect.ownKeys(obj).forEach(function(item){
        console.log("ownkeys",item,obj[item]); //abc 345,c 456,Symbol(abc) 123
    })

  

原文地址:https://www.cnblogs.com/karila/p/7865931.html