javascript基础系列之Symbol
javscript基础系列之symbol
常见用法
1 | const sym = Symbol("hello"); |
1 | // const sym1 = new Symbol(); // Uncaught TypeError: Symbol is not a constructor |
静态属性
Symbol.length
1 | // Symbol.length 长度属性 0 ,具体用途不太清楚 |
Symbol函数对象属性
Symbol.iterator
1 | // Symbol.iterator 返回对象默认迭代器的方法,可以被for...of遍历到 |
Symbol.asyncIterator
1 | // Symbol.asyncIterator // 异步可迭代对象 |
Symbol.match
1 | // Symbol.match 是否为正则对象(配置项) |
Symbol[replace|search|split]
1 | // Symbol.replace 替换所匹配字符串时所调用的方法 |
Symbol.hasInstance
1 | // Symbol.hasInstance 确定对象是否是构造函数的实例 |
Symbol.isConcatSpreadable
1 | // Symbol.isConcatSpreadable 配置Array.prototype.concat是否展开数组元素 |
Symbol.unscopables
1 | // Symbol.unscopables 从with环境中排除属性 |
Symbol.species
1 | // Symbol.species 允许子类覆盖对象的默认构造函数 |
Symbol.toPrimitive
1 | // Symbol.toPrimitive 对象转换为对应的原始值时,会调用此函数 |
Symbol.toStringTag
1 | // Symbol.toStringTag 对象默认描述的字符串值 |
静态方法
Symbol.for
1 | // Symbol.for(key) 根据给定的key, 从运行时的symbol注册表中找到对应的symbol,找到了就返回,找不到就创建,并放入到全局Symbol注册表中 |
实例属性
Symbol.prototype.description
1 | // Symbol.prototype.description 对该Symbol对象的描述 |
实例方法
Symbol.prototype[toSource|toString]
1 | // Symbol.prototype.toSource 兼容性很差,废弃 |
Symbol.prototype.valueOf
1 | // Symbol.prototype.valueOf 返回Symbol对象 |
Symbol.prototype[@@toPrimitive]
1 | // Symbol.prototype[@@toPrimitive] 返回Symbol原始值,参考Symbol.prototype.toPrimitive |