ECMAScript 2021 中的 valueOf() 与 toString() 详解

阅读时长 3 分钟读完

JavaScript 是一种动态解释型语言,它允许我们在运行时对变量进行类型转换。这些类型转换函数,包括 valueOf() 与 toString(),可以帮助我们将数据类型在不同的场景中转换为所需要的形式。在 ECMAScript 2021 中,这两个函数都进行了一些重要的更新和新增。本文将详细介绍它们的功能、应用和示例。

valueOf()

valueOf() 方法是 JavaScript 原生对象的一个方法,用来返回对象的原始值。在对象需要被处理为原始数据类型的时候,该方法会被 JavaScript 引擎自动调用。对于大多数对象类型,valueOf() 的返回值都是对象本身。而对于一些特殊的对象类型,则需要通过重写该方法,使其能够正确的返回对象所需要的原始值。例如,Date 对象其中的 valueOf() 方法会返回一个 UNIX 时间戳,而数组对象的 valueOf() 方法则会返回该数组的原始对象。

在 ECMAScript 2021 中,该函数新增了对 BigInt 类型的支持。BigInt 数据类型是 JavaScript 中用来支持超大整数的一种数据类型,通常是用来进行高精度运算的。在过去的版本中,BigInt 对象无法调用 valueOf() 方法,因此无法得到它的原始值。而在新版本中,valueOf() 方法能够正确的将 BigInt 类型的对象转换成它所代表的整数。下面是一个示例代码:

在上述代码中,我们定义了一个 BigInt 类型的对象 v,并使用 valueOf() 方法获取它的原始值。在输出的结果中,我们可以看到其正确的输出了 1234567890n。

toString()

toString()方法是 JavaScript 原生对象的一个方法,用来将对象转换为字符串形式。与valueOf() 一样,toString() 方法在对象需要被处理为字符串的时候会被 JavaScript 引擎自动调用。对于大多数对象类型而言,toString() 的返回值都是该对象的字符串表示形式。而对于一些特殊的对象类型,则需要通过重写该方法,使其能够正确的返回正确的字符串形式。例如,Date 对象的 toString() 方法会返回一个人类可读的日期字符串,而数组对象的 toString() 方法则会返回该数组的字符串形式。

在 ECMAScript 2021 中,该函数也新增了对 BigInt 类型的支持。与 valueOf() 方法类似,toString() 方法也能够正确的处理 BigInt 类型对象的转换。下面是一个示例代码:

在上述代码中,我们是使用 toString() 方法将 BigInt 类型的对象 v 转换为字符串形式。在输出的结果中,我们可以看到其成功的转换成了 1234567890 字符串形式。

总结

在 JavaScript 开发中,valueOf() 方法与 toString() 方法是非常常用的方法之一。它们可以帮助我们方便的在不同的场景中转换数据类型,而 ECMAScript 2021 中的更新与新增,更是极大地扩展了它们的应用范围。当我们需要将对象转换为其原始值或者字符串形式的时候,可以通过调用 valueOf() 与 toString() 方法来实现。在开发中的使用,我们应该根据不同的场景和需求,使用不同的语法和函数。

参考

  1. ECMAScript 2021 Language Specification: https://tc39.es/ecma262/
  2. MDN web docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6472e7e0968c7c53b0073af0

纠错
反馈