ES10(2019)Symbol 扩展 Symbol.prototype.description
Posted 优小U
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES10(2019)Symbol 扩展 Symbol.prototype.description相关的知识,希望对你有一定的参考价值。
我们知道,Symbol
的描述只被存储在内部的 Description
,没有直接对外暴露,我们只有调用 Symbol
的toString()
时才可以读取这个属性:
const name = Symbol('es')
console.log(name.toString()) // Symbol(es)
console.log(name) // Symbol(es)
console.log(name === 'Symbol(es)') // false
console.log(name.toString() === 'Symbol(es)') // true
现在可以通过 description 方法获取 Symbol 的描述:
console.log(Symbol('desc').description);
// "desc"
console.log(Symbol.iterator.description);
// "Symbol.iterator"
console.log(Symbol.for('foo').description);
// "foo"
console.log(`$Symbol('foo').descriptionbar`);
// "foobar"
语法:
Symbol('myDescription').description;
Symbol.iterator.description;
Symbol.for('foo').description;
Symbol
对象可以通过一个可选的描述创建,可用于调试,但不能用于访问 symbol 本身。Symbol.prototype.description
属性可以用于读取该描述。与 Symbol.prototype.toString()
不同的是它不会包含"Symbol()"
的字符串。具体请看实例:
Symbol('desc').toString(); // "Symbol(desc)"
Symbol('desc').description; // "desc"
Symbol('').description; // ""
Symbol().description; // undefined
// well-known symbols
Symbol.iterator.toString(); // "Symbol(Symbol.iterator)"
Symbol.iterator.description; // "Symbol.iterator"
// global symbols
Symbol.for('foo').toString(); // "Symbol(foo)"
Symbol.for('foo').description; // "foo"
以上是关于ES10(2019)Symbol 扩展 Symbol.prototype.description的主要内容,如果未能解决你的问题,请参考以下文章