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

参考:http://es6.ruanyifeng.com/#docs/symbol

Last updated

Was this helpful?