ES6:Symbol

Symbol

symbol 是ES6标准新增基本数据类型 。

Symbol()

Symbol()函数会返回symbol类型的值,该symbol具有暴露内建成员对象的静态属性和暴露全局Symbol注册的静态方法。
Symbol()函数的使用类似于内建对象类,但作为构造函数来说它并不完整,也不支持 new Symbol()语法。

const symbol0 = Symbol(0);
const symbol1 = Symbol();
const symbol2 = Symbol('');
const symbol3 = Symbol('a');
const symbol4 = Symbol('a');

console.log(typeof symbol0);
// "symbol"

console.log(symbol0 === 0);
// false

console.log(symbol1.toString());
// "Symbol()"

console.log(symbol2.toString());
// "Symbol()"

console.log(symbol1 === symbol2);
// false

console.log(symbol1.toString() === symbol2.toString());
// true

console.log(symbol3.toString());
// "Symbol(a)"

console.log(symbol3 === symbol4);
// false

Symbol.for(key)

Symbol.for(key)方法使用给定的key在运行时全局Symbol注册表中搜索,如果找到则将其返回。否则将使用此key在全局Symbol注册表中创建一个的symbol。

const symbol0 = Symbol()
// 创建了key为undefined的symbol

const symbol1 = Symbol.for()
// 创建了key为"undefined"的symbol

const symbol2 = Symbol.for('a')
// 创建了key为a的symbol

const symbol3 = Symbol.for('a')
// 返回了key为a的symbol

console.log(symbol1 === symbol2);
// false

console.log(symbol2 === symbol2);
// true
Symbol.keyFor(symbol)

Symbol.keyFor(symbol)方法使用给定的symbol在运行时全局Symbol注册表中搜索该symbol的key,如果找到则将其返回。否则返回undefined。

const symbol0 = Symbol()
// 创建了key为undefined的symbol

const symbol1 = Symbol.for()
// 创建了key为"undefined"的symbol

const symbol2 = Symbol.for('a')
// 创建了key为a的symbol

const key0 = Symbol.keyFor(symbol0 )
// 返回了symbol0 的 key

const key1 = Symbol.keyFor(symbol1 )
// 返回了symbol1 的 key

const key2 = Symbol.keyFor(symbol2 )
// 返回了symbol2 的 key

console.log(key0);
// undefined

console.log(key1);
// "undefined"

console.log(key2);
// "a"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值