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本身无关; 它适用于所有对象.