JavaScript - Symbol.toStringTag 属性



Symbol.toStringTag 属性是一个内置的符号值,用于自定义对象的默认字符串描述。当对象转换为字符串时(通常通过 Object.prototype.toString() 方法),它允许开发者为对象的类型提供自定义的字符串表示。

当你对一个对象调用 toString() 方法时,JavaScript 内部会调用 Object.prototype.toString(),它返回一个包含对象类型的字符串。默认情况下,此字符串表示为 [object Object]。但是,你可以使用 Symbol.toStringTag 属性更改此表示,以提供有关对象类型的更多详细信息。

语法

以下是 JavaScript Symbol.toStringTag 属性的语法:

Symbol.toStringTag

参数

此属性不接受任何参数。

返回值

此属性返回一个字符串对象。

示例

示例 1

让我们来看下面的例子,我们将自定义用户定义对象上的 toStringTag 表示。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         const x = {
            name: 'Tessa',
            age: 24,
            [Symbol.toStringTag]: 'PersonDetails'
         };
         document.write(Object.prototype.toString.call(x));
      </script>
   </body>
</html>

如果我们执行上面的程序,它将在网页上显示文本。

示例 2

考虑另一种情况,我们将为自定义类定制 toStringTag 表示。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         class Bike {
            constructor(x) {
               this.x = x;
            }
            get[Symbol.toStringTag]() {
               return 'Bike';
            }
         }
         const a = new Bike('R15');
         document.write(Object.prototype.toString.call(a));
      </script>
   </body>
</html>

执行上述脚本后,它将在网页上显示文本。

示例 3

在下面的例子中,我们将 Symbol.toStringTag 与派生类一起使用。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         class x extends Array {
            get[Symbol.toStringTag]() {
               return 'TP';
            }
         }
         const y = new x(11, 22, 33);
         document.write(Object.prototype.toString.call(y));
      </script>
   </body>
</html>

当我们执行脚本时,它将在网页上显示文本。

广告