javascript中的Symbol数据类型

symbol是es6新出的原始数据类型,symbol主要用于防止属性名冲突而产生的,保证属性名的唯一性。
创建一个symbol数据类型

var sy = Symbol(); 
console.log(typeof sy);
//输出: Symbol

描述参数

var sy1 = Symbol("this is a Symbol");
var sy2 = Symbol("this is a Symbol");
console.log(sy1 == sy2);
输出:false

从上面可以看出虽然两个symbol的描述参数是一样的但是两个却不是同一个Symbol。
Symbol.for
根据描述获取Symbol,如果不存在则新建一个Symbol,会在系统进行登记

var sy1 = Symbol.for("symbol");
var sy2 = Symbol.for("symbol");
console.log(sy1 == sy2); 
//输出:true

之所以输出true是因为Symbo.forl在系统进行的登记,sy1和sy2是同一个Symbol。
Symbol.keyFor
Symbol.keyFor 根据使用Symbol.for登记的Symbol返回描述。这里要注意的是Symbol.keyFor只能获取Symbol.for登记的描述,通过这种Symbol(“this is a Symbol”)方式添加的描述,Symbol.keyFor无法获取。

var sy1 = Symbol.for("test");
console.log(Symbol.keyFor(sy1)); 
let sy2 = Symbol("test");
console.log(Symbol.keyFor(sy2));
输出:test,undefinded
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值