🌈 类型与作用

Symbol(); // 不是构造函数,不可用new Symbol()

var s1 = Symbol();
var s2 = Symbol();
console.log(s1 === s2); // false
console.log(s1, '--', s2);
console.log(typeof s1);

Untitled

var s1 = Symbol();
s1.a = 1; // 无法添加属性
console.log(s1.a);

Untitled

通过传入的字符串添加不同的标识符

var s1 = Symbol('ss');
var s2 = Symbol({a: 1}); // 会调用Object.prototype.toString()
var s3 = Symbol(undefined);
var s4 = Symbol(null);
console.log(s1);
console.log(s2);
console.log(s3);
console.log(s4);

Untitled

symbol 类型数据无法使用 Number 包装类进行数据转换,String 和 Boolean 可以

var s1 = Symbol(1);
console.log(s1);
console.log(String(s1));
console.log(Boolean(s1));
console.log(Number(s1));

Untitled

var s1 = Symbol(null);
console.log(Object.getPrototypeOf(s1));

Untitled

toString

var s1 = Symbol()
console.log(s1.toString());
console.log(!s1)

Untitled

使用

var name1 = Symbol();
var obj = {};
obj[name1] = 'zhangsan';
console.log(obj);