ES6 的 Symbol 的应用场景是什么? --<Javascript 学习笔记 4>
Lemon1x 45 0

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 }

这时候 idpassword 外部就拿不到了,但是只要内部有 Symbol Key 就能访问到了。

评论区

索引目录