在ES6中,Symbol成为了一种新的原始数据类型,可以用来创建独一无二的标识符。但是在创建Symbol的时候,只有一个可选的描述参数,它并没有被存放在Symbol对象中。在ES9中,引进了一个新的属性:Symbol.prototype.description
,它会返回Symbol对象中的描述信息,如果没有描述信息,则返回 undefined。
为什么引进 Symbol.prototype.description?
在ES6中,Symbol的描述信息传入是可选的,而且在创建后无法取得它。在某些场景下,需要获取Symbol对象的描述信息,但无法直接获得这个信息,这就需要通过一些显示的办法来获取描述信息。
一些实际的编程场景中,Symbol对象的描述信息可以用于解释某个值的含义,或者用于调试和定位代码问题。例如,我们可以创建一个Symbol对象,它表示程序中的某个状态:
----- ----- - ---------------------
在程序中我们也可以定义一个Map对象,使用STATE作为键值。为了在调试时更清楚地了解STATE的具体含义,如果能够返回Symbol对象的描述信息将是非常方便的。
Symbol.prototype.description 的使用
在ES9中,我们可以通过Symbol对象的原型链访问Symbol.prototype.description
属性,它将返回Symbol对象的描述信息,例如下面的代码:
----- -------- - ---------- --------- ---------------------------------- -- --- -------
在上述代码中,我们可以看到通过mySymbol.description
获取到了实例化时以传入的描述信息。
如果我们没有传入描述信息,则返回 undefined,例如下面的代码:
----- -------- - --------- ---------------------------------- -- ---------
需要注意的是,如果我们没有使用 Symbol() 方法来创建符号,则无法使用 Symbol.prototype.description 属性来访问描述信息。
总结
ES9 引进的 Symbol.prototype.description 属性为获取Symbol对象的描述信息提供了一个非常方便的方式,它是一个重要的改进,使得Symbol对象更加易于使用。在一些实际的编程场景中,我们可以使用它来解释某个值的含义,或者用于调试和定位代码问题。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/654738dc7d4982a6eb19778b