跳到主要内容

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() 方法只是简单地返回对象本身。
  • 然而,对于 NumberBooleanString 类型的对象,valueOf() 返回相应对象表示的原始值。

示例 1:使用内置的 valueOf() 方法

// 创建一个 Number 对象
var num = new Number(12);

console.log(num.valueOf() + 8);
// 输出:20

console.log(num + 8);
// 输出:20

在上述示例中,我们创建了一个值为 12Number 对象 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() 方法,并将结果字符串转换为数字。

推荐阅读: