
{
// 声明
let a1=Symbol();
let a2=Symbol();
console.log(a1===a2); //false 说明Symbol()声明的变量是唯一的,独一无二的
let a3=Symbol.for('kk'); //kk被Symbol()声明且存在a3里
let a4=Symbol.for('kk'); //kk已经被Symbol()声明过了且存在a3里,所以不需要再声明,直接把a3赋值给a4
let a5=Symbol.for('a5'); //同理
let a6=Symbol.for('a5');
console.log(a3===a4); //true
console.log(a5===a6); //true
}
{
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(let [key,value] of Object.entries(obj)){
console.log('let of',key,value);
//let of abc 345
//let of c 456
}
//取Symbol
Object.getOwnPropertySymbols(obj).forEach(function(item){
console.log(item,obj[item]); //Symbol(abc) 123
})
//取所有
Reflect.ownKeys(obj).forEach(function(item){
console.log('ownkeys',item,obj[item]);
// ownkeys abc 345
// ownkeys c 456
// ownkeys Symbol(abc) 123
})
}
近期评论