ES6-Symbol

什么是Symbol?

Symbol可以认为是ES6新增的一种数据类型,而且是一种值类型。表示独一无二的值!

为什么要使用Symbol?

ES5中对象属性都是用字符串来定义的,当对象使用的多时,有可能会遇到对象属性命名重复的冲突,在ES6中,为了解决这种冲突,所以产生了新的数据类型,也就是Symbol出现及使用的原因!

如何使用Symbol?

示例1:

//使用Symbol函数执行来生成一个Symbol数据类型
let a = Symbol();
console.log(Object.prototype.toString.call(a));
//输出结果是[object Symbol]

从示例1可以知道变量a是一个Symbol类型的值。

示例2:

let s1 = Symbol('foo');
let s2 = Symbol('bar');

s1 // Symbol(foo)
s2 // Symbol(bar)

s1.toString() // "Symbol(foo)"
s2.toString() // "Symbol(bar)"

从示例2我们要知道一个点:Symbol()的括号里面可以加一个字符串。那么加这个字符串是干嘛用的呢?
其实这个字符串可以将其理解为一个标志参数,用于标志这个独一无二的变量,当我们将这个变量使用toString()方法转为字符串类型时候,可以利用这个标志进行相应区分!但是要注意一点:Symbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。

示例3:

// 没有参数的情况
let s1 = Symbol();
let s2 = Symbol();

s1 === s2 // false

// 有参数的情况
let s1 = Symbol('foo');
let s2 = Symbol('foo');

s1 === s2 // false


从示例3可以知道这点:s1和s2都是Symbol函数的返回值,而且参数相同,但是它们是不相等的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值