ES6 Symbol使用

ES6引入了Symbol数据类型,用于创建唯一的对象属性名,解决命名冲突问题。Symbol不是对象,不可用new操作符。它可以接受参数用于区分不同的Symbol变量。Symbol可以定义对象的唯一属性,避免属性名的冲突,也可用于定义常量。三种在对象中使用Symbol的方式包括直接赋值、计算属性和使用Object.defineProperty。
摘要由CSDN通过智能技术生成

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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值