符号
状态: 初稿
介绍
自 ECMAScript 2015 开始, symbol
跟 number
和 string
一样, 成为一种原始数据类型.
symbol
值通过 Symbol
构造函数创建.
1 | let sym1 = Symbol(); |
符号具有持久性, 唯一性.
1 | let sym2 = Symbol("key"); |
如同字符串, 符号也能承担对象属性键的角色.
1 | const sym = Symbol(); |
符号可与计算出的属性声明联合定义对象属性和类成员.
1 | const getClassNameSymbol = Symbol(); |
笔记
常见符号
除用户自定义符号外, 还存在一批常见内建符号.
内建符号代表语言内部功能.
列表如下:
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’ 环境绑定中排除的属性名.