📜  JavaScript Object.prototype.valueOf() 方法(1)

📅  最后修改于: 2023-12-03 15:01:38.361000             🧑  作者: Mango

JavaScript Object.prototype.valueOf() 方法

valueOf() 方法是 JavaScript 中一种重要的内置函数。它可以从一个对象中获取它的原始值。对于大多数对象,其 valueOf() 方法返回的都是对象本身,而对于一些内置对象,比如 NumberStringBoolean 等,它们在实例化时就重写了 valueOf() 方法,使其返回的是对象的原始值。

语法
obj.valueOf()

其中,obj 为需要获取原始值的对象。

返回值

valueOf() 方法返回一个对象的原始值,如果调用该方法的对象不是对象类型,则该方法会直接返回该对象本身。

示例
对象的原始值
const obj = {
  val: 123,
  valueOf() {
    return this.val;
  }
}

console.log(obj);             // { val: 123, valueOf: [Function: valueOf] }
console.log(obj.valueOf());  // 123

在上面的代码中,obj 对象中的 valueOf() 方法被重写为返回 obj.val。因此,当我们调用 obj.valueOf() 方法时,会返回 123 这个原始值。

非对象类型
console.log('hello'.valueOf());  // 'hello'
console.log((5).valueOf());      // 5
console.log(true.valueOf());     // true

由于字符串、数字、布尔值都是 JavaScript 中的基本数据类型,当我们调用它们的 valueOf() 方法时,会直接返回它们本身。

结论

Object.prototype.valueOf() 方法可以用于获取对象的原始值,但是在一些特定的对象上,其 valueOf() 方法被重写,返回了对象的原始值。