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]);
})