Symbol类型是ES6新增的一种基本数据类型,它是一种类似于字符串的数据类型,但是具有唯一性,即每个Symbol值都是独一无二的。
Symbol值可以作为对象属性名使用,这样就能保证不会出现同名的属性。
Symbol类型的定义方式为:
let sym = Symbol();
Symbol类型有以下几个特点:
Symbol类型在以下场景中应用较为广泛:
使用Symbol值作为对象属性名可以保证不会出现同名的属性,从而避免在多人协作开发时出现属性名冲突的情况,例如:
const obj = {}; const name = Symbol('name'); obj[name] = '张三'; console.log(obj[name]); // '张三'
由于Symbol值是唯一的,所以可以将其用作常量的定义,例如:
const COLOR_RED = Symbol('red'); const COLOR_GREEN = Symbol('green'); const COLOR_BLUE = Symbol('blue');
使用Symbol值可以方便地定义枚举类型,例如:
const Day = { MONDAY: Symbol('Monday'), TUESDAY: Symbol('Tuesday'), WEDNESDAY: Symbol('Wednesday'), THURSDAY: Symbol('Thursday'), FRIDAY: Symbol('Friday'), SATURDAY: Symbol('Saturday'), SUNDAY: Symbol('Sunday') };