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

goj*_*ygo 4 javascript class ecmascript-6

我正在寻找创建一个类,以便它将返回一个值而不是ES6中的类对象.

这几乎是同样的问题,不过ES6.有点触及它,但你仍然必须明确地调用一个属性.

我想做的事情如下:

class Foo {
  constructor(value) {
    this.value = value;  // returns an object other than *this*.
  }
}    

var foo = new Foo(4);
console.log(foo) // 4
Run Code Online (Sandbox Code Playgroud)

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

小智 7

valueOf 无论你想做什么,都可以帮助你:

class Foo {
  constructor(value) {        this.value = value; }
  valueOf()          { return this.value;         }
  ^^^^^^^^^
}    

var foo = new Foo(4);
console.log(+foo) // 4
Run Code Online (Sandbox Code Playgroud)

你必须确保你了解它是如何valueOf工作的.根据文件:

JavaScript调用valueOf方法将对象转换为原始值.

因此valueOf,当然,简单地引用该对象不会调用; 这会让你无法引用底层对象.它用于需要将对象强制转换为基元的情况,例如+foo.

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