ES10(2019)Symbol 扩展 Symbol.prototype.description

Posted 优小U

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES10(2019)Symbol 扩展 Symbol.prototype.description相关的知识,希望对你有一定的参考价值。

我们知道,Symbol 的描述只被存储在内部的 Description ,没有直接对外暴露,我们只有调用 SymboltoString()时才可以读取这个属性:

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的主要内容,如果未能解决你的问题,请参考以下文章

ES6-----学习系列九(Symbol数据类型)

ES5-ES6-ES7_Symbol数据类型

ES6箭头函数rest参数扩展运算符Symbol的使用

ES10(2019)新特性

JS中的基本类型和引用类型

Symbol