- Symbol的概念
这种数据类型提供一个独一无二的值
用这种方式生命的数据变量永远都不会相等,保证它们是唯一的独一无二的
{
//声明
let a1=Symbol();
let a2=Symbol();
console.log(a1===a2);
let a3=Symbol.for('a3');
//这里'a3'相当于一个key值,使用Symbol.for的时候首先查找这个是否定义过,如果定义过就直接取出使用
let a4=Symbol.for('a3');
console.log(a3===a4);
}
打印结果:
false
true
{
let a1=Symbol.for('abc');
let obj={
[a1]:'123',
'abc':345,
'c':456
};
console.log('obj',obj);
//使用常规的for in和let of是取不到Symbol属性的
for (let[key,value] of Object.entries(obj)){
console.log('let of',key,value);
}
//这是需要使用getOwnPropertySymbols()
//forEach()是数组的方法
Object.getOwnPropertySymbols(obj).forEach(function (item) {
console.log(obj[item]);//这时就能拿到Symbol属性的值了
})
//getOwnPropertySymbols()只能拿到Symbol属性的值
//这里要拿到所有的的值需要使用 Reflect.ownKeys这个属性
Reflect.ownKeys(obj).forEach(function (item) {
console.log('ownkeys',item,obj[item]);
})
}
打印结果:
obj {abc: 345, c: 456, Symbol(abc): "123"}
let of abc 345
let of c 456
123
ownkeys abc 345
ownkeys c 456
ownkeys Symbol(abc) 123
- Symbol的作用
网友评论