JavaScript Object.valueOf()

Object.valueOf() 方法返回指定对象的原始值。

示例

// create a new Number object with value of 12
let num = new Number(12);

console.log(num);
// Output: [Number: 12]

console.log(num.valueOf());
// Output: 12

valueOf() 语法

valueOf() 方法的语法是:

obj.valueOf()

这里,obj 是我们要查找其原始值的对象。


valueOf() 参数

valueOf() 方法不接受任何参数。


valueOf() 返回值

valueOf() 方法返回指定对象的原始值。

注意事项:

  • 对于Object类型的对象,没有原始值,因此valueOf()方法仅返回对象本身。
  • 但是,对于Number、BooleanString类型的对象,valueOf()返回对应对象表示的原始值。

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

// create a Number object
var num = new Number(12);

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

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

在上面的示例中,我们创建了一个名为 numNumber 对象,其值为 12

当我们对 num 调用 valueOf() 方法时,它会返回原始值 12,然后将其加 8,得到输出 20

同样,当我们把 num8 时,valueOf() 方法会被隐式调用,表达式的计算结果为 20


示例 2:创建自定义 valueOf() 方法

// create a constructor function
function customNum(n) {
  this.number = n;
}

// create a custom valueOf() function customNum.prototype.valueOf = function () { return this.number; };
// create num1 object from customNum() constructor function var num1 = new customNum(2); console.log(num1 + 3); // Output: 5

在上面的示例中,我们创建了一个自定义的 valueOf() 方法,它覆盖了 JavaScript 的内置 valueOf() 方法。该方法从 CustomNum() 函数的 number 属性返回该值。

num13 相加时,valueOf() 方法会被隐式调用,我们得到结果 5


示例 3:valueOf() 方法与一元 + 运算符

// create a number with the value of 5 
const num = 5;

// use + operator in front of the string operand
console.log(+"5" + num);
// Output: 10

console.log(+[1] + num);
// Output: 6

console.log(+true + num); 
// Output: 6

console.log(+false + num); 
// Output: 5

console.log(+undefined + num); 
// Output: NaN

console.log(+null + num); 
// Output: 5

在上面的示例中,+ 运算符首先对操作数调用内置的 valueOf() 方法以获取原始值。然后使用一元加运算符 + 将得到的原始值转换为数字。

注意:如果 valueOf() 方法未返回原始值,则会改用 toString() 方法,并将得到的字符串转换为数字。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战