symbol的含义
一种原始数据类型,特点:独一无二的值
创建 symbol
创建一个 symbol 类型
const sy=Symbol('kk');
const sy1=Symbol('kk');
console.log(sy==sy);//返回fasle
注意:通过 Symbol 方法创建值的时候不可使用 new 操作符,原因是通过 new 实例化的结果是一个 object 对象,而不是原始类型的 symbol
Symbol 方法接收一个参数,该参数只是对生成的 symbol 值的一种描述,没有实际作用
注意的是就算是传入相同的参数,生成的 symbol 值也是不相等的,因为 Symbol 本来就是独一无二的意思
Symbol.for 方法
可以检测上下文中是否已经存在使用Symbol.for
方法且有相同参数创建的symbol 值,如果存在则返回已经存在的值(所以就会有相等的值),如果不存在则新建。
const s1 = Symbol.for('foo');
const s2 = Symbol.for('foo');
console.log(typeOf s1); // symbol
console.log(s1 === s2); // true
Symbol.keyFor 方法返回一个使用 Symbol.for 方法创建的 symbol 值的 key
const abd= Symbol.for("foo");
const key = Symbol.keyFor(abd);//返回字符串类型
console.log(key) // "foo