[es6] symbol 是个啥东西,具体有什么用,有哪些应用场景,js内置的对于symbol 的应用有哪些

首先请看官网,然后明确下面几个基本知识点

  1. Symbol 是 es6 提出,是基本数据类型
  2. typeof SymbolInstance = symbol
  3. 不支持 new 语法
  4. 每个 Symbol() 返回的值都是唯一的
  5. 可以作为对象的属性,且是唯一的属性
  6. 有内置通用 symbol,可以使用属性访问
    1. 迭代
      1. Symbol.iterator 返回一个对象默认迭代器的方法,被 for ... of 使用
      2. 可以显式使用 arr[Symbol.iterator]()
    2. 正则表达式
      1. Symbol.match 对字符串进行匹配的方法,也用于确定一个对象是否作为正则表达式使用,被String.prototype.match 使用
    3. Symbol.toPrimitive
      1. 一个对象转为基本数据类型的方法【彻底搞懂隐式转换
    4. Symbol.toStringTag
      1. 用于对象的默认描述的字符串值,被 Object.prototype.toString 使用

Symbol 应用场景

  1. 创建唯一的对象键,作为对象的唯一属性,避免名字冲突,也不怕和原型上的变量冲突了
  2. 作为对象 / class 的私有成员,因为只有持有对应符号的引用的代码才能访问它们
  3. 隐藏性,不会再 for...in 循环中,也不会被 Object.keys 等方法返回
  4. 使用内置符号,如 Symbol.iterator用于迭代器
  5. 在 ajax 中使用 symbol
相关推荐
AI3D_WebEngineer几秒前
企业级业务平台项目设计、架构、业务全解之平台篇
前端·javascript·vue
该用户已不存在3 分钟前
免费 SSL 证书缩短至 90 天,你的运维成本还能hold住吗
前端·后端·https
七月十二19 分钟前
【Vite】离线打包@iconify/vue的图标
前端·vue.js
米花丶20 分钟前
解决前端监控上报 Script Error实践
前端·javascript
JarvanMo22 分钟前
如何在 Flutter 应用中大规模实现多语言翻译并妥善处理 RTL(从右到左)布局?
前端
Haha_bj22 分钟前
iOS深入理解事件传递及响应
前端·ios·app
1024小神23 分钟前
用html和css实现放苹果的liquidGlass效果
前端
拜晨23 分钟前
CG-01: 深入理解 2D 变换的数学原理
前端
im_AMBER25 分钟前
Canvas架构手记 07 状态管理 | 组件通信 | 控制反转
前端·笔记·学习·架构·前端框架·react
JarvanMo29 分钟前
理解 Flutter 中的 runApp() 与异步初始化
前端