JavaScript - Symbol.valueOf() 方法



JavaScript Symbol.valueOf() 方法可以用来获取 Symbol 对象的原始值。Symbol 是一种不可变的、独特的数据类型,用作唯一标识符。为了避免命名冲突,它们被用作对象属性的键。

当遇到 Symbol 对象并且操作需要原始值时,它会自动调用 valueOf() 方法。此方法可用于需要原始值的场景,例如算术运算或比较,因为它返回与 Symbol 对象关联的原始值。

语法

以下是 JavaScript Symbol.valueOf() 方法的语法:

valueOf()

参数

此属性不接受任何参数。

返回值

此属性返回指定 Symbol 对象的原始值。

示例

示例 1

让我们来看下面的例子,我们将比较两个 Symbol 并检查输出。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         const x = Symbol('TP');
         const y = Symbol('tp');
         document.write(x.valueOf() === y.valueOf());
      </script>
   </body>
</html>

如果我们执行上面的程序,它将在网页上显示 false,因为即使看起来相似,Symbol 也是唯一的。

示例 2

考虑另一个例子,我们将使用 Symbol.valueOf() 方法与 Map。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         const x = Symbol('TP');
         const map = new Map();
         map.set(x, 'WELCOME');
         document.write(map.get(x).valueOf());
      </script>
   </body>
</html>

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

示例 3

在下面的例子中,我们将使用 Symbol.valueOf() 并为类分配一个唯一值。即使创建了新的实例,它也会返回它自己的值。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         class x {
            constructor() {
               this[Symbol.valueOf()] = 'TutorialsPoint';
            }
         }
         const a = new x();
         document.write(a[Symbol.valueOf()]);
      </script>
   </body>
</html>

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

广告