转发TypeScript基础入门之Symbols

介绍

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

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基础入门 - 接口 - 继承接口 项目实践仓库 https://github.com/durban89/typescript_demo.git tag: 1.0.13 为 ...

  2. TypeScript基础入门 - 泛型 - 泛型类型

    2019独角兽企业重金招聘Python工程师标准>>> 转载 TypeScript基础入门 - 泛型 - 泛型类型 项目实践仓库 https://github.com/durban8 ...

  3. TypeScript基础入门 - 函数 - 简介

    2019独角兽企业重金招聘Python工程师标准>>> 转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/ ...

  4. TypeScript基础入门 - 接口 - 可索引的类型

    转载地址 TypeScript基础入门 - 接口 - 可索引的类型 项目实践仓库 https://github.com/durban89/typescript_demo.git tag: 1.0.11 ...

  5. TypeScript基础入门 - 接口 - 简介

    转载地址 TypeScript基础入门 - 接口 - 简介 项目实践仓库 https://github.com/durban89/typescript_demo.git tag: 1.0.6 为了保证 ...

  6. TypeScript基础入门 - 接口 - 可选属性

    2019独角兽企业重金招聘Python工程师标准>>> 转载地址 TypeScript基础入门 - 接口 - 可选属性 项目实践仓库 https://github.com/durba ...

  7. TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions)

    2019独角兽企业重金招聘Python工程师标准>>> 转发 TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions) 高级类型 可辨识联合(D ...

  8. TypeScript基础入门

    目录 本文概览: 1. TypeScript的特点 2. TypeScript的安装与使用 (1)项目初始化 (2)配置TSLint 本文概览: 1. TypeScript的特点 TypeScript ...

  9. 变量的三重属性_TypeScript基础入门 - 变量声明(三)

    转载地址TypeScript基础入门 - 变量声明(三)​www.gowhich.com 项目实践仓库 https://github.com/durban89/typescript_demo.gitt ...

  10. 【TS语法|基础入门】《前端的未来——TypeScript》掌握TS基础语法

    前端的未来--TypeScript TS基础语法 文章简介 主要内容 1 第一个 TypeScript 程序 2 TypeScript 保留关键字 2.1 TypeScript保留关键字 2.2 空白 ...

最新文章

  1. sql语言管理中计算机系统,00051管理系统中计算机应用第四章数据库系统考纲
  2. nutch-site参数配置
  3. linux下wget命令(下载文件命令)
  4. 31.错误处理.rs
  5. DWR中引用JS的路径问题
  6. docker-compose部署Minio
  7. IDEA如何添加项目启动参数
  8. python微信群管理开禁言_微信群群主可不可以设置禁言?群主设置禁言别人方法...
  9. 苹果笔记本安装windows系统
  10. AngularJS - uib-datepicker-popup - 日期控件
  11. ipv6的127位掩码如何表示_IPv4地址、子网掩码、详细讲解
  12. 凌晨!科比因坠机离世, 球迷泪崩:凌晨4点,我的青春没了
  13. Navicat导入Excel提示无法打开Excel文件
  14. 【camera】手机相机系统
  15. IVX低代码平台——小程序微信红包的应用的做法
  16. Coffee Chicken
  17. fluxbox_使用Fluxbox Linux桌面作为窗口管理器
  18. python exercise string之一常规操作
  19. svn 合并分支代码
  20. 透过现象看Java AIO的本质 | 得物技术

热门文章

  1. Python 第三方模块 科学计算 SymPy模块
  2. 麦德龙的商品供应链管理
  3. 关于未来趋势的几点预测:
  4. 一夜没睡,仍然精力充沛——工作规划-2013.07.23
  5. 【SPEA】T100BT 全能型电池测试仪——精度高、智能化
  6. 怎么修改teredo服务器,技术员设置win7系统通过teredo连接IPv6的修复方案
  7. 国产手机厂商抢占高端,二手机市场不容忽视
  8. html中target四种选择_blank、_parent、_self、_top,分别是什么意思?
  9. 天啦噜!知道硬盘很慢,但没想到比 CPU L1 Cache 慢 10000000 倍
  10. 信创大事件 | 2022“国民云计算品牌”正式放榜