ES6:Symbol 和 Symbol 属性
1. 概念
Symbol 是ES6中新引进的原始数据类型,主要作用是可以表示独一无二的值,比如定义对象唯一的属性名,定义不会重复的常量;
2. 基础用法 Symbol('描述符') 描述信息可有可无
注意事项:
(1) Symbol 不是构造函数,不能用 new Symbol(),否则会报错
(2) Symbol() 括号中的内容代表 Symbol 的描述,只是方便开发辨识,并不是 Symbol 的值
(3) 每个 Symbol 初始的值都是独一无二,不能划等号,但是赋值后,是可以判断相等的
let s = Symbol(8888) let n = Symbol(8888) let a = { [s]: 'name', [n]: 'name' } console.log(s == n, s, n) // false Symbol(8888) Symbol(8888) console.log(a[s] === a[n],a) // true {Symbol(8888): 'name', Symbol(8888): 'name'}
(4) Symbol 不能和其他值参与运算
(5) Symbol 可以转为字符串,布尔值,但是不能转为数字
3. 高级用法
使用Symbol可以定义对象的唯一属性名。这类属性不会被Object.keys()或者for…in遍历到,起到保护个别隐私属性的作用
注意事项:
(1) Symbol 值作为对象的属性名时,不能使用点运算符
(2) 如果要访问Symbol属性对应的值,需要使用中括号[ ]