ES6语法(8)

来源:互联网 发布:复杂网络模型作业 编辑:程序博客网 时间:2024/05/22 07:50

Symbol用法


Symbol的作用声明独一无二的变量

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


对象中,key值可以利用symbol取相同的值

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

注意,利用let key of obj不能遍历到symbol的属性,所以需要用getOwnPropertySymbols,拿到的结果是数组。

            Object.getOwnPropertySymbols(obj).forEach(function(item){
                console.log(items,obj[item]);   //只包含Symbol的key和value
            })

想要所有的key就需要用Reflect.ownKeys方法

            Reflect.ownKeys(obj).forEach(function(item){
                console.log(item,obj[item]);
            })