理解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 { |