用法
Symbol用于防止属性名冲突而产生的,比如向第三方对象中添加属性时。
Symbol 的值是唯一的,独一无二的不会重复的
let hd = Symbol();
let edu = Symbol();
console.log(hd); //symbol
console.log(hd == edu); //false
Symbol 不可以添加属性
let hd = Symbol();
hd.name = "后盾人";
console.log(hd.name); //undefine
描述参数
可传入字符串用于描述Symbol,方便在控制台分辨Symbol
let hd = Symbol("is name");
let edu = Symbol("这是一个测试");
console.log(hd); //Symbol(is name)
console.log(edu.toString()); //Symbol(这是一个测试)
对象属性
Symbol 是独一无二的所以可以保证对象属性的唯一。
Symbol 声明和访问使用 [](变量)形式操作
也不能使用 . 语法因为 .语法是操作字符串属性的。
下面写法是错误的,会将symbol 当成字符串symbol处理
let symbol = Symbol("后盾人");
let obj = {
symbol: "hdcms.com"
};
console.log(obj);
正确写法是以[] 变量形式声明和访问
let symbol = Symbol("后盾人");
let obj = {
[symbol]: "houdunren.com"
};
console.log(obj[symbol]); //houdunren.com