ES6学习总结是自己在学习过程中的总结,记笔记就是为了督促自己学习和复习,好记性不如烂笔头。如果有错误,感谢指出。
Symbol
Symbol数据类型,es6新增;Symbol声明的变量永远不相等
声明
{
let a1=Symbol();
let a2=Symbol();
console.log(a1===a2);//false
}
声明2
{
let a3=Symbol.for('a3');
let a4=Symbol.for('a3');
console.log(a3===a4);//true
}
Symbol的使用 可以使用Symbol声明属于自己的唯一的变量 当其他继承他的也可以声明同名属性 而不会报错 注意:Symbol声明的变量for of是不能获取到的;
可以通过Object.getOwnPropertySymbols()获取Symbol变量;
如果需要获取所有包括Symbol和非Symbol的属性 可以通过Reflect.ownKeys()来进行获取;
作用,使用场景
使用同名的变量,不会因为key冲突
let a1=Symbol.for('abc');
let obj={
[a1]:'123',
'abc':345,
'c':456
};
console.log('obj',obj);
用symbol做key值,let of for in 都取不到值
for(let [key,value] of Object.entries(obj)){
console.log('let of',key,value);//adc c
}
使用下列方法取到 symbol
Object.getOwnPropertySymbols(obj).forEach(function(item){
console.log(obj[item]);
})
获取所有包括Symbol和非Symbol的属性
Reflect.ownKeys(obj).forEach(function(item){
console.log('ownkeys',item,obj[item]);
})
网友评论