Symbol
Symbol
概述
ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。
Symbol 值通过Symbol函数生成,可以加上参数,表示对实例的描述。
let s = Symbol();
let s1 = Symbol('foo');
console.log(s);
console.log(s1);
//Symbol()
//Symbol(ew)
typeof s
typeof s1
// "symbol"
// "symbol"Symbol函数不能使用new命令,这是一种数据类型,不是对象。
如果Symbol参数是一个对象,就会调用toString方法。
Symbol不能与其他数据类型运行,可以转换成字符串以及布尔值。
作为属性名的Symbol
每个Symbol值都是不相等的,作为对象属性名不会给覆盖,但不能用点运算。
属性名遍历
对象的Symbol属性只能通过Object.getOwnPropertySymbols方法获得。
一个新的API,Reflect.ownKeys方法可以返回所有类型的键名,包括常规键名和 Symbol 键名。
Symbol.for(),Symbol.keyFor()
Symbol.for()方法会搜索有没有这个参数作为名称的Symbol值,有就返回,没有就新建。
Symbol.keyFor方法返回一个已登记的 Symbol 类型值的key。
Last updated
Was this helpful?