Symbol 简介

Symbol

Symbol 是内置对象 (built-in object), 其构造返回 symbol 基本类型, Symbol valueSymbol, 具有唯一性。Symbol 通常用于表示对象的键的唯一性,不与其他键冲突,同时在常用的访问对象的手段中中隐藏自身,是一种弱封装。

Symbol() 调用保证返回值的唯一性。Symbol.for("key") 给定 "key" 每次调用都返回同样的 Symbol, 若给定 key 有全局 Symbol 注册,则返回注册的 Symbol, 否则创建新的 Symbol 并将 key 对应的 Symbol 注册到全局 Symbol 注册中,然后返回创建的 Symbol.

示例

创建 Symbol 基本类型,提供可选字符串做为描述:

let sym1 = Symbol();
let sym2 = Symbol("foo");
let sym3 = Symbol("foo");

上面创建了3个Symbol. 注意 Symbol(“foo”) 每次创建的不一样.

Symbol('foo') === Symbol('foo')  // false

使用 new 操作符会报 TypeError:

let sym = new Symbol(); // TypeError

全局 Symbol registry 中的共享 Symbols

操作全局 Symbol 使用 Symbol.for() 及 Symbol.keyFor().

查找对象的 Symbol 属性

Object.getOwnPropertySymbols();
JSON.stringify() 会忽略 Symbol 类型的键。

静态属性

Symbol.asyncIterator 指定对象的默认异步遍历器

Symbol.hasInstance instanceof 操作符判定

Symbol.isConcatSpreadable

Symbol.iterator

思考

  1. 为什么 new Symbol() 会报错呢

  2. Symbol 静态属性如何使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值