我正在寻找创建一个类,以便它在ES6中返回一个值而不是类对象。
与this几乎相同,但在ES6中。 This稍微触及它,但你仍然必须明确地调用一个属性。
我想做类似的事情:
class Foo {
constructor(value) {
this.value = value; // returns an object other than *this*.
}
}
var foo = new Foo(4);
console.log(foo) // 4
但目前它返回{value: 4}
。
答案 0 :(得分:6)
valueOf
可以帮助您完成您想做的任何事情:
class Foo {
constructor(value) { this.value = value; }
valueOf() { return this.value; }
^^^^^^^^^
}
var foo = new Foo(4);
console.log(+foo) // 4
您必须确保了解valueOf
的工作原理。根据{{3}}:
JavaScript调用valueOf方法将对象转换为原始值。
因此,简单地引用该对象当然不会调用valueOf
;这会让你无法引用底层对象。它用于需要将对象强制转换为原始的情况,例如在+foo
中。
valueOf
与ES6本身无关;它适用于所有对象。