# 概述

valueOf 和 toString 是对象的两个内置方法,它们用于将对象转换为原始值或字符串。每个对象都从 Object.prototype 继承了这两个方法,并且可以根据需要重写它们。

# valueOf

强制数字类型转换和强制基本类型转换优先会调用 valueOf

# toString

强制字符串转换会优先调用 toString

# valueOf 与 toString 的区别

特性valueOftoString
目的返回对象的原始值返回对象的字符串表示
默认行为返回对象本身(引用),多数对象不会覆盖返回 “[object Object]”,可被覆盖
调用场景数学运算、比较操作字符串拼接、显示对象信息

# 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const myObj = {
toString: function () {
return "Hello World";
},
valueOf() {
return 1;
}
};

console.log('jkl: '.concat(myObj)); // jkl: Hello World
console.log(myObj + "!!!"); // 1!!!
console.log(myObj + 1); // 2
console.log(String(myObj)); //Hello World
console.log(+myObj); // 1

# 总结

  1. valueOf 用于将对象转换为原始值,常用于数学运算或比较。
  2. toString 用于将对象转换为字符串,常用于字符串拼接或显示对象信息。
  3. JavaScript 会根据上下文自动选择调用 valueOftoString,也可以通过重写这两个方法来控制对象的行为。