JavaScript 对象 valueOf() 方法
Object.valueOf()
方法返回指定对象的原始值。
示例
// 创建一个值为 12 的 Number 对象
let num = new Number(12);
console.log(num);
// 输出:[Number: 12]
console.log(num.valueOf());
// 输出:12
valueOf() 语法
valueOf()
方法的语法为:
obj.valueOf();
这里的 obj 是我们想要找出原始值的对象。
valueOf() 参数
valueOf()
方法不接受任何参数。
valueOf() 返回值
valueOf()
方法返回指定对象的原始值。
注意:
- 对于
Object
类型的对象,没有原始值,所以valueOf()
方法只是简单地返回对象本身。 - 然而,对于
Number
、Boolean
或String
类型的对象,valueOf()
返回相应对象表示的原始值。
示例 1:使用内置的 valueOf() 方法
// 创建一个 Number 对象
var num = new Number(12);
console.log(num.valueOf() + 8);
// 输出:20
console.log(num + 8);
// 输出:20
在上述示例中,我们创建了一个值为 12 的 Number
对象 num。
当我们在 num 上调用 valueOf()
方法时,它返回 12 的原始值,然后与 8 相加得到 20 的输出。
类似地,当我们将 num 与 8 相加时,valueOf()
方法被隐式调用,表达式被计算得到 20 的输出。
示例 2:创建自定义的 valueOf() 方法
// 创建一个构造函数
function customNum(n) {
this.number = n;
}
// 创建一个自定义的 valueOf() 函数
customNum.prototype.valueOf = function () {
return this.number;
};
// 使用 customNum() 构造函数创建 num1 对象
var num1 = new customNum(2);
console.log(num1 + 3);
// 输出:5
在上述示例中,我们创建了一个覆盖 JavaScript 内置 valueOf()
方法的自定义 valueOf()
方法。该方法返回 CustomNum()
函数中 number 属性的值。
当 num1 与 3 相加时,valueOf()
方法被隐式调用,结果是 5。
示例 3:使用一元 + 运算符的 valueOf() 方法
// 创建一个值为 5 的数字
const num = 5;
// 在字符串操作数前使用 + 运算符
console.log(+"5" + num);
// 输出:10
console.log(+[1] + num);
// 输出:6
console.log(+true + num);
// 输出:6
console.log(+false + num);
// 输出:5
console.log(+undefined + num);
// 输出:NaN
console.log(+null + num);
// 输出:5
在上述示例中,+
运算符首先调用操作数的内置 valueOf()
方法获取原始值。然后使用一元加运算符 +
将结果的原始值转换为数字。
注意:如果 valueOf()
方法未返回原始值,则改为调用 toString()
方法,并将结果字符串转换为数字。
推荐阅读: