返回 JavaScript 类值而不是对象引用(在 ES6 中)

Return JavaScript class value instead of object reference (in ES6)

本文关键字:ES6 对象引用 JavaScript 返回      更新时间:2023-09-26

我希望创建一个类,以便它将返回一个值而不是 ES6 中的类对象。

这与这个问题几乎相同,但在 ES6 中。这稍微触及了它,但您仍然必须显式调用属性。

我想做这样的事情:

class Foo {
  constructor(value) {
    this.value = value;  // returns an object other than *this*.
  }
}    
var foo = new Foo(4);
console.log(foo) // 4

但目前它返回{value: 4}.

valueOf可以帮助您完成任何尝试的操作:

class Foo {
  constructor(value) {        this.value = value; }
  valueOf()          { return this.value;         }
  ^^^^^^^^^
}    
var foo = new Foo(4);
console.log(+foo) // 4

你必须确保你了解valueOf是如何工作的。根据文档:

JavaScript 调用 valueOf 方法将对象转换为基元值。

因此,简单地引用对象不会调用valueOf,当然;这将使您无法引用底层对象。它用于需要将对象强制为基元的情况,例如在+foo中。

valueOf与 ES6 本身无关;它适用于所有对象。