自ECMAScript 2015起,symbol成为了一种新的原生类型,就像number和string一样。

symbol介绍

symbol类型的值是通过Symbol构造函数创建的。

let sym1 = Symbol();let sym2 = Symbol("key"); // 可选的字符串key

Symbols是不可改变且唯一的。

let sym2 = Symbol("key");
let sym3 = Symbol("key");sym2 === sym3; // false, symbols是唯一的

像字符串一样,symbols也可以被用做对象属性的键。

let sym = Symbol();let obj = {[sym]: "value"
};console.log(obj[sym]); // "value"

Symbols也可以与计算出的属性名声明相结合来声明对象的属性和类成员。

const getClassNameSymbol = Symbol();class C {[getClassNameSymbol](){return "C";}
}let c = new C();
let className = c[getClassNameSymbol](); // "C"

众所周知的Symbols

除了用户定义的symbols,还有一些已经众所周知的内置symbols。 内置symbols用来表示语言内部的行为。
以下为这些symbols的列表:

  • Symbol.hasInstance,方法,会被instanceof运算符调用。构造器对象用来识别一个对象是否是其实例;
  • Symbol.isConcatSpreadable,布尔值,表示当在一个对象上调用Array.prototype.concat时,这个对象的数组元素是否可展开;
  • Symbol.iterator,方法,被for-of语句调用。返回对象的默认迭代器;
  • Symbol.match,方法,被String.prototype.match调用。正则表达式用来匹配字符串;
  • Symbol.replace,方法,被String.prototype.replace调用。正则表达式用来替换字符串中匹配的子串;
  • Symbol.search,方法,被String.prototype.search调用。正则表达式返回被匹配部分在字符串中的索引;
  • Symbol.species,函数值,为一个构造函数。用来创建派生对象;
  • Symbol.split,方法,被String.prototype.split调用。正则表达式来用分割字符串;
  • Symbol.toPrimitive,方法,被ToPrimitive抽象操作调用。把对象转换为相应的原始值;
  • Symbol.toStringTag,方法,被内置方法Object.prototype.toString调用。返回创建对象时默认的字符串描述。
  • Symbol.unscopables,对象,它自己拥有的属性会被with作用域排除在外。

TypeScript学习--Symbols相关推荐

  1. 最全的TypeScript学习指南

    大家好,今天给大家带来 某机构教研总监陆神的开年之作<最全TypeScript学习指南>可以说是非常的细致.全面 TypeScript 是由微软2012年推出的,自由和开源的编程语言.这门 ...

  2. RUST直接升钢指令_[译]参照TypeScript学习Rust-part-1

    [译]参照TypeScript学习Rust-1 · 前端在线​regx.vip 对于前端,笔者比较认可Rust作为前端开发技术栈投资的,本文系列翻译旨在分享.学习Rust这门语言. Rust常常被认为 ...

  3. TypeScript学习笔记3:运算符

    TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 运算符 ...

  4. TypeScript学习笔记2:数据类型

    TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 数据类型 ...

  5. TypeScript学习笔记1:变量赋值及书写方式

    TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 变量赋值 ...

  6. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. typescript 接口 java_[Java教程]【TypeScript】TypeScript 学习 2——接口

    [Java教程][TypeScript]TypeScript 学习 2--接口 0 2015-06-19 12:00:28 在 TypeScript 中,接口是用作约束作用的,在编译成 JavaScr ...

  8. TypeScript 学习一 参数,函数,析构表达式

    1,TypeScript是由微软开发的,不过新出的Angular2框架就是谷歌公司由TypeScript语言编写的,所以现在TypeScript是有微软和谷歌一起支持的: 2,TypeScript在j ...

  9. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  10. TypeScript学习总结

    TypeScript学习总结 前言 一.TypeScript是什么? 二.JavaScript 与 TypeScript 的区别 三.TypeScript基础 3.3.TypeScript 基础语法 ...

最新文章

  1. Stylus插件开发教程
  2. c语言调用视频播放软件,C语言播放视频
  3. elif在python中啥意思_python中elif 结构语句怎么判断?
  4. 阿里巴巴技术专家三画:如何画好架构图
  5. java 字节码增强原理_深入浅出Java探针技术1--基于java agent的字节码增强案例
  6. 钢体pdc钻头计算机辅助设计和绘图,PDC钻头三维设计软件的研究与设计
  7. Y_CLIENT_QHD_504 role in GM6 ZSAP_CRM_BCR_SALESREP_DAIDE
  8. node事件循环 EventEmitter 异步I/O Buffer缓冲区 模块
  9. 服务器迁移虚拟化实施方案,虚拟化实施方案
  10. C++: find()函数的注意事项
  11. 还不知道如何使用 IDEA ?教你三招快速掌握 IDEA
  12. 推荐一款MD神器吧:重度MD用户必备神器
  13. 小米浏览器禁止java,如何禁止小米手机浏览器中弹出窗口广告
  14. SAP FI组织结构及概念
  15. 现代网页的灵魂 —— JavaScript
  16. [失败]uuv_simulator在台式机_虚拟环境下会崩溃的问题[失败]
  17. 在线电子书阅读微信小程序 毕业设计(1)首页
  18. 循环结构(打印图形专项练习)
  19. Win2003系统部署SSL证书(部署https教程)
  20. go语言数据类型之切片slice

热门文章

  1. 自定义 SpringBoot Banner 图案
  2. 猜数字游戏(伪随机数对猜数字游戏的影响)
  3. 14年macmini装双硬盘_2011中Mac Mini详尽拆解 可装两块硬盘
  4. 开源私有云盘python_搭建Windows版Seafile开源私有云盘
  5. 美团饿了么外卖五折优惠券蓝海项目,已有人推广赚7万,赶紧赚一波。(饿了么美团外卖红包小程序搭建教程)
  6. 利用arcmap提取河流中心线
  7. 关于未来趋势的几点预测:
  8. Python mysql的常用操作
  9. 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明
  10. c语言输入坐标三角形周长面积,3.1.7计算三角形周长和面积