ES6之前JavaScript的数据类型
Number(数字)
String(字符串)
Boolean(布尔值)
Object( 对 象 )
Null(空对象指针)
Undefined(声明的变量未被初始化时)
引入的背景
对象的属性名容易产生命名冲突,为保证键名的唯一性,故es6引入Symbol这种新的原始数据类型确保创建的每个变量都是独一无二的
特点
Symbol类型的数据是类似字符串的数据类型,由于Symbol函数返回的值是原始类型的数据,不是对象,故Symbol函数前不能使用new命令,否则会报错。
可选参数。由于控制台输出不同的Symbol变量时都是Symbol(),故为了区分,可在创建Symbol变量时传入参数进行区分。如:
//这⾥的a1,a2的作⽤可以说是为了备注,以⾄于我们输出Symbol变量时能够区分不同的变量。
let a1 = Symbol('a1')
let a2 = Symbol('a2')
用法
定义对象的唯⼀属性名
//在对象⾥⽤Symbol作为属性名的三种写法
let name = Symbol()
//第⼀种⽅式:借助数组读取name变量,此时不能⽤点运算符,点运算符默认后⾯的参数是字符串
let a = {}
a[name]='Nick'
//第⼆种⽅式:构造时声明
let a = {
[name]:'Nick'
}
//第三种Object.defineProperty
let a = {}
Object.defineProperty(a,name, {value:'Nick'});
定义常量
//定义字符串常量
const name = Symbol("Nick");