ES5对象属性名都是字符串,容易造成属性名冲突
ES6引入新的原始数据类型Symbol表示独一无二的值
对象的属性值可以有两种类型:字符串 ,Symbol类型(独一无二不会与其他属性名发生冲突)
//1.定义
let str1 = Symbol();
let str2 = Symbol();
console.log(str1 === str2);
console.log(typeof str1);
//2.描述
let str3 = Symbol('name');
let str4 = Symbol('name');
console.log(str3);
console.log(str4);
console.log(str3 === str4);//false
//3.对象的属性名
const obj = {};
obj.name ='张三';
obj.name ='李四';
console.log(obj); //李四
obj[Symbol('name')] ='张三';
obj[Symbol('name')] ='李四';
console.log(obj);//{Symbol(name): "张三", Symbol(name): "李四"}