📅  最后修改于: 2023-12-03 15:31:48.248000             🧑  作者: Mango
在Javascript中,每个对象都有一个 valueOf()
方法,这个方法用来返回当前对象的基本值(即:primitive value)。如果你将一个对象强制类型转换为原始类型(例如 字符串、数字、布尔值),Javascript 就会调用这个方法。如果你没有为一个特定的对象定义 valueOf()
方法,那么将会默认使用对象的 toString() 方法,因为toString() 也可以返回基本值。
let obj = {
name: "John",
age: 30,
toString() {
return `${this.name} is ${this.age} years old`;
},
valueOf() {
return this.age;
}
};
console.log(obj + 10); //40
console.log(String(obj)); //John is 30 years old
console.log(Number(obj)); //30
console.log(Boolean(obj)); //true
在上面的示例中,我们定义了一个对象,其中包含名称和年龄属性,以及 toString() 和 valueOf() 方法。按照上述示例, 我们用 Number, String, 以及 Boolean 三个函数再将对象转成基本值。
valueOf()
的返回值类型应该与当前对象的类型相同。
当 Javascript 需要执行一个操作,它会尝试自动调用这个对象的 valueOf()
方法,如:
valueOf()
方法作为它的参数来转换对象,valueOf()
方法来转换该对象成为一个字符串。在大多数情况下,valueOf()
方法都是由 JavaScript 自动调用的,并不需要手动调用。
因为 valueOf()
方法很少需要手动调用,最好只在以下两种情况下为对象显式定义 valueOf()
方法:
valueOf()
行为。 代码示例:
let myObject = {
name: "我的对象",
value: 10,
valueOf: function() { return this.value; }
};
console.log(myObject + 5); // 15
在上面的示例中,我们定义了 myObject 对象,并手动为其定义了 valueOf() 方法来返回一个基本值。然后,我们将 myObject 内容转为基本值加5,结果为15。