Symbol是ES6引入的一种新的基本数据类型。它表示一个独一无二的值,可以作为对象的属性名使用。与字符串或数字等其他类型的属性名不同,Symbol类型的属性名不会与其他属性名冲突,因为每个Symbol值都是唯一的。
Symbol值通过Symbol()函数创建,它的语法格式如下:
let mySymbol = Symbol();
Symbol函数可以接受一个可选的字符串参数,用于描述该Symbol值的含义,例如:
let mySymbol = Symbol('my description');
Symbol值可以用作对象属性的键名,如下所示:
let mySymbol = Symbol('my symbol'); let obj = { [mySymbol]: 'foo' }; console.log(obj[mySymbol]); // 'foo'
需要注意的是,由于Symbol类型的属性名是唯一的,因此它们不能被枚举,即无法使用for...in循环遍历。如果要遍历Symbol类型的属性,可以使用Object.getOwnPropertySymbols方法获取所有Symbol类型的属性名。