Symbol-基本数据类型primitive data type

498 阅读2分钟

这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

前言

如今Vue3 + TypeScript 应用特别广了,如果不学习, 总感觉跟不上大厂的步伐了. 学习 TypeScript(当然也是可选的). TypeScript 实战专栏这里记录学习 TypeScript 的过程, 以及学习 Vue3.x 实战专栏 的过程, 回顾上一篇: 学习了 TS 的初始化, 安装, 创建 TS 项目, 编译运行以及初识 TS 类型约束的世界: 原始数据类型 各个击破

本文对 基本数据类型 Symbol 进行针对性学习

基本数据类型 Symbol

Symbol 是一种基本数据类型 (primitive data type)。

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

每个 Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。

const symbol1 = Symbol();
const symbol2 = Symbol(213);
const symbol3 = Symbol('xn213');

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

console.log(symbol2 === 213); /// false
/// 下面的代码 s2 和 s3 并不相同..
let s1 = Symbol();
let s2 = Symbol('xn213');
let s3 = Symbol('xn213');

Symbol("xn213") === Symbol("xn213"); /// false

new 一个 Symbol? No!

如果使用 [new]关键字创建, new运算符的语法将抛出 [TypeError]错误:

let newSymbol = new Symbol(); /// => TypeError

Symbol 属性

  1. Symbol 长度属性 Symbol.length ,值为0。
  2. symbol 构造函数的原型: Symbol.prototype

Vue3 学习实战系列更文:

  1. Vue3 源码学习-工具函数 utils(二)
  2. Vue3-初体验,
  3. Vue3-生命周期setup()函数,
  4. Vue3-computed & watch,
  5. Vue3-Teleport 改变组件挂载的根节点,
  6. Vue3-Suspense 处理异步请求,
  7. Vue3-defAsyncComponent 异步组件(新增),
  8. Vue3-fragments (新增),
  9. Vue3-v-model (非兼容),
  1. TypeScript 系列: