1.Symbol类型是什么,有什么用
Symbol可以定义为一个符号,一种标识符,用来区分某些东西。
2.创建一个符号
- 通过Symbol来创建,Symbol不是一个构造方法,所以不能够使用new操作符。
let sym = Symbol();
let sym = Symbol("aaa");//"aaa"是这个符号的description(描述)
- 两个description相同的符号,并不是同一个符号。两个没有description的符号,也不是同一个符号。
let sym1 = Symbol("aaa");
let sym2 = Symbol("aaa");
console.log(sym1 == sym2);//控制台输出结果为false
let sym3 = Symbol();
let sym4 = Symbol();
console.log(sym3 == sym4);//控制台输出结果为false
- Symbol不能通过new构造函数来创建,所以不能够创建符号包装对象,如果确实想用符号包装对象,可以借用Object函数。
let sym = Symbol();
let symbolObject = Object(sym);
console.log(typeof symbolObject);//输出结果为object
- 通过全局符号注册表来创建符号。
Symbol.for()的参数只能是一个字符串,它会检查全局注册表,如果没有找到,就会生成一个新符号添加到注册表中。后续再使用这种方式用相同的字符串创建符号的话,这个字符串在全局注册表中被找到,就会发现存在与该字符串对应的符号,然后就会返回该符号实例。
let symbol1 = Symbol.for