理解JavaScript中的valueOf()
原文:Understand valueOf() in JavaScript
学习String类型、Number类型、Date类型都具备的valueOf()函数。
valueOf()函数是所有JavaScript对象中一个特殊的函数。根据Mozilla文档,valueOf()
函数“返回特定对象的原始值”,JavaScript有六种原始类型:
- Boolean: true 或 false
- Number: -1, 0, 3.14, 等等
- String: ‘字符串’
- Null
- Undefined
- Symbol: Symbol(‘mySymbol’)
valueOf()函数返回的值,使用typeof
运算符后一定属于以上类型之一。以下是三种常见的JavaScript类型——String、Number和Date——的valueOf()
返回值。String#valueOf()
和Number#valueOf()
将对象进行“拆箱”,返回相应的原始字符串或数值。Date#valueOf()
返回JavaScript时间戳。
1 | const s = new String('test'); |
JavaScript在使用==
(与===
不同)、<
、>
、<=
和>=
这些运算符比较不同值时,调用valueOf()
函数进行强制类型转换。例如,JavaScript语言规范中在<运算符中使用valueOf的讨论。
假设有一个对象,它的valueOf()
始终返回0。在使用<
和==
运算符时,这个对象和原始数值0是等效的。然而,在使用==
时,这个对象和new Number(0)
不是等效的,因为JavaScript使用==
比较两个对象时,不会调用valueOf()
进行强制类型转换。
1 | class MyClass { |