Symbol代表创建后独一无二且不可变的数据类型,主要是为了解决可能出现的全局变量冲突的问题。
- Symbol 函数前不能使用 new 命令,否则会报错。
- Symbol 函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。
- Symbol 作为属性名,该属性不会出现在 for...in、for...of 循环中,也不会被 Object.keys()、Object.getOwnPropertyNames()、JSON.stringify() 返回。
- Object.getOwnPropertySymbols 方法返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值。
- Symbol.for 接受一个字符串作为参数,然后搜索有没有以该参数作为名称的 Symbol 值。如果有,就返回这个 Symbol 值,否则就新建并返回一个以该字符串为名称的 Symbol 值。
- Symbol.keyFor 方法返回一个已登记的 Symbol 类型值的 key。
let hd = Symbol();
let edu = Symbol();
console.log(hd);
console.log(hd == deu)
let hd = Symbol();
hd.name = "常东东";
console.log(hd.name);
let hd = Symbol("is 东东");
let edu = Symbol("这里测试一下");
console.log(hd);
console.log(edu.toString());
let symbol = Symbol("老王");
let obj = {
symbol: "hdcms.com"
};
console.log(obj);
let symbol = Symbol("锤子");
let obj = {
[symbol]: "houdunren.com"
};
console.log(obj[symbol]);