js 数据类型 Symbol

唯一的标识符

有两种原始类型可以作为对象的键(key):1、字符串,2、Symbol()。
用法:

  • Symbol('描述') 创建Symbol类型值
  • Symbol.description 获取Symbol描述
let id = Symbol('1');  // 括号是描述,即这个标识符的名字,
// 获取描述  id.description  // '1'
Symbol('1') === Symbol('1')  // false 

作用:向对象里添加一个唯一的key名。

“忍者:隐藏属性”
比如第三方代码的对象,你想添加另外的属性,但第三方代码中有可能会设置了本来预设的对象key值,如果你通过Symbol作为key值,就会变成一个“隐藏属性”,就不会被意外访问和重写了
Symbol作为key,即起到隐藏符号属性,会在 for in 以及 Object.keys() 不会被遍历出来。
但是在通过Objcet.assgin(),会同时复制字符串和Symbol的属性

Symbol 全局注册表

  • Symbol.for()
    通过Symbol.for() 按名字返回一个Symbol 。如果没有将被创建(在注册表中注册),通过描述名就可以取到相同的Symbol了,(查找和创建全局功能)
    如果需要取到同一个Symbol,就通过全局注册Symbol.for注册,使用Symbol.for就会获取到同一个Symbol
let id = Symbol.for('id'); 
let id2 = Symbol.for('id')
id == id2 // true
  • Symbol.keyFor()
    Symbol.KeyFor()按Symbol返回一个名字。但仅限在全局中查找Symbol,如果在全局中没有则返回Undefined。(不适用于非全局 symbol)
let id = Symbol('id')
let id2 = Symbol.for('id2')
let a = Symbol.keyFor(id) // undefined
let b = Symbol.keyFor(id2) // id2

本文作者:小赖不赖

本文链接:https://www.cnblogs.com/lazyxlai/p/16862294.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   小赖不赖  阅读(112)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 这就是爱吗 杨胖雨
  2. 2 起风了 买辣椒也用券
  3. 3 星星在唱歌 司南
  4. 4 我记得 赵雷
起风了 - 买辣椒也用券
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.