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.toStringTgat 与派生类一起使用。


<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>

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