Javascript 学习笔记 4
相信大家都学习过了 Symbol 后有个疑惑,这玩意有什么用啊?苦思冥想也想不出有什么应用环境,但其实 Vue 和 Node 等等框架都用过 Symbol,今天就来讲一讲。
但 Object 的 Key 是唯一的,所以很容易被覆盖:
const obj = {
birthday: 29
};
obj.birthday = 15; // 哎呀,被别人覆盖了
这不完蛋了,俩人都想写自己的生日。
但因为 Symbol 有不可重复的特性,所以可以用这个特性,来实现防止被其他人重写:
const birth1 = Symbol('birth');
const birth2 = Symbol('birth');
const obj = {
[birth1]: 29,
[birth2]: 15
};
console.log(obj);
// { [Symbol(birth)]: 29, [Symbol(birth)]: 15 }
这时就有了俩 Description 相同,但是值不相同且不冲突的两个 Key。
但是如果只有这个特性,那还不足以单独出一个类型到 Javascript 中,它还可以让一个值变成外部只读变量:
const id = Symbol('id');
const obj = {
[id]: 256,
[Symbol('password')]: 123456
};
console.log(obj);
// { [Symbol(id)]: 256, [Symbol(password)]: 123456 }
这时候 id 和 password 外部就拿不到了,但是只要内部有 Symbol Key 就能访问到了。