symbol 是es6语法下定义的第七种数据类型symbol,表示独一无二的值的意思,且申明一个symbol不能用new
(前六种数据类型:基本数据类型:null,undefined,number,string,boolean,复杂数据类型:object)
以前对象的属性名都是字符串,现在就可以是symbol类型了
let sym1=Symbol("a"); // 不可以加new 关键字
let sym2=Symbol("a");
let a1="a";
let a2="a";
a1===a2; //true
sym1===sym2; //false
改造方法:两个同名的属性,但完全表示两个不同的key rectangle
const shapeType = {
triangle: Symbol("triangle"),
rectangle: Symbol("rectangle"),
rectangle1: Symbol("rectangle")
};
/**ps:该属性不会出现在for...in,for...of循环中,也不会被Object.keys(),Object.getOwnPropertyNames(),JSON.stringify()返回。但是,它也不是私有属性,有一个Object.getOwnPropertySymbols方法,可以获取指定对象的所有 Symbol 属性名。**/
function getArea(shape) {
let area = 0;
switch (shape) {