我们知道,Symbol 的描述只被存储在内部的 Description ,没有直接对外暴露,我们只有调用 SymboltoString()时才可以读取这个属性:

const name = Symbol('es')
console.log(name.toString()) // Symbol(es)
console.log(name) // Symbol(es)
console.log(name === 'Symbol(es)') // false
console.log(name.toString() === 'Symbol(es)') // true

现在可以通过 description 方法获取 Symbol 的描述:

console.log(Symbol('desc').description);
// "desc"console.log(Symbol.iterator.description);
// "Symbol.iterator"console.log(Symbol.for('foo').description);
// "foo"console.log(`${Symbol('foo').description}bar`);
// "foobar"

语法:

Symbol('myDescription').description;
Symbol.iterator.description;
Symbol.for('foo').description;

Symbol 对象可以通过一个可选的描述创建,可用于调试,但不能用于访问 symbol 本身。Symbol.prototype.description属性可以用于读取该描述。与 Symbol.prototype.toString() 不同的是它不会包含"Symbol()"的字符串。具体请看实例:

Symbol('desc').toString();   // "Symbol(desc)"
Symbol('desc').description;  // "desc"
Symbol('').description;      // ""
Symbol().description;        // undefined// well-known symbols
Symbol.iterator.toString();  // "Symbol(Symbol.iterator)"
Symbol.iterator.description; // "Symbol.iterator"// global symbols
Symbol.for('foo').toString();  // "Symbol(foo)"
Symbol.for('foo').description; // "foo"

【ES10(2019)】Symbol 扩展 Symbol.prototype.description相关推荐

  1. ES6 Symbol类型的应用、symbol属性名的遍历、Symbol.for()Symbol.keyFor()

    目录 Symbol类型 介绍 Symbol.prototype.description Symbol的应用 1 给对象内追加属性 2 消除魔术字符串 symbol属性名的遍历 Symbol.for() ...

  2. 【ES10(2019)】JSON扩展 superset / stringify() 增强能力

    JSON superset 什么是 JSON 超集?,简而言之就是让 ECMAScript 兼容所有JSON支持的文本. ECMAScript 曾在标准 JSON.parse 部分阐明 JSON 确为 ...

  3. 【ES10(2019)】Array扩展 flat / flatMap

    Array.prototype.flat() flat()方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回. const arr1 = [0, 1, 2 ...

  4. 【ES10(2019)】String 扩展 trimStart / trimEnd

    String.prototype.trimStart() trimStart()方法从字符串的开头删除空格,移除原字符串左端的连续空白符并返回一个新字符串,并不会直接修改原字符串本身.trimLeft ...

  5. lterator 迭代器 静态属性Symbol.iterator Symbol(Symbol.iterator)

    ** lterator迭代器 ** 迭代模式:提供一种方法是可以顺序获得聚合对象中的各个元素,是一种最简单也最常见的设计模式.他可以让用户透过特定的接口巡防集合中的每一个元素而不用了解底层的实现 迭代 ...

  6. cannot find symbol [ERROR] symbol: class DistributedFileSystem

    编译tez时,由于使用的是hadoop3.1.2 所以出现以下错误, [ERROR] COMPILATION ERROR :  [INFO] ----------------------------- ...

  7. shader graph_Shader Graph中的自定义照明:在2019年扩展图形

    shader graph With the release of Unity Editor 2019.1, the Shader Graph package officially came out o ...

  8. 【ES11(2020)】String 扩展 String.prototype.matchAll()

    matchAll()方法返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器. const regexp = /t(e)(st(\d?))/g; const str = 'test1test2'; ...

  9. 【ES10(2019)】Object.fromEntries()

    Object.fromEntries() 方法把键值对列表转换为一个对象. const entries = new Map([['foo', 'bar'],['baz', 42] ]); const ...

最新文章

  1. java实现上传_文件上传(java)
  2. 一周一论文(翻译)——[SIGMOD 2015] Congestion Control for Large-Scale RDMA
  3. 百度地图api改变覆盖物背景实例及css颜色值简介
  4. 【数据结构与算法】之深入解析“相交链表”的求解思路与算法示例
  5. 微信企业号开发:启用回调模式
  6. android 日程安排view,RecyclerView 列表控件中简单实现时间线
  7. 服务器需要哪些芯片,云计算的服务器需要芯片
  8. Android播放音频的两种方式
  9. Remoting在FX2.0中的新特性 (2)
  10. Vite+Vue3创建项目案例
  11. 安卓对讲机安装滔滔对讲黑屏起麦黑屏对讲设置
  12. 使用x64编译fastdb报错
  13. 弱水三千,该取几瓢饮?
  14. linux ansys172 卸载,基于ANSYS 经典界面的密封垫片的加载-卸载仿真
  15. JavaScript基础知识总结 18:dom基本操作
  16. matlab 两列数 画图,excel表格数据进行画图-怎样在excel绘图将两列数据分别作为横轴纵轴...
  17. python回车换行怎么不行_python回车不能换行怎么办
  18. 计算机学院运动会方阵策划案,运动会方阵策划书模板
  19. iPhone营销四大基础:共鸣、专注、灌输、用心
  20. Android测试驱动开发实践

热门文章

  1. 沿着path路径做动画
  2. C++测试题练习题1
  3. windows 7/2008系统字体变成黑体解决
  4. 消除桌面虚拟化应用的存储瓶颈
  5. 翻译 《Why Indy?》计划进度表
  6. 程序员年薪高达40万,为什么有很多程序员单身?看看网友怎么说!
  7. 今天的离离原上草的飞鸽传书
  8. 在和人相处时的即时通讯软件
  9. 每日一例飞鸽传书2012偷偷来袭
  10. 好的飞鸽传书2007未必是“语言律师”