一、ES6增加Symbol这个原始数据的理由
Symbol不是对象类型,而是原始数据,增加这个原始数据类型的理由就是:每次调用,希望产生不同的值。应用场景是Map的key值,每次都希望key不相同。
let sy = Symbol("aa");
console.log(sy); // Symbol(aa)
typeof(sy); // "symbol"
// 相同参数 Symbol() 返回的值不相等
let sy1 = Symbol("aa");
sy === sy1; // 返回false,这里是关键,不同的值,可以方便地作为map的key值。
二、应用场景
let sy = Symbol("key1");
let sy1 = Symbol("key1");
let syObject = {};
syObject[sy] = "kk";
syObject[sy1] = "kk1";
console.log(syObject);
//输出
//{ [Symbol(key1)]: 'kk', [Symbol(key1)]: 'kk1' }