我想创建一个类,以便它返回一个值而不是 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}
。
最佳答案
valueOf
可以帮助您完成您想要做的任何事情:
class Foo {
constructor(value) { this.value = value; }
valueOf() { return this.value; }
^^^^^^^^^
}
var foo = new Foo(4);
console.log(+foo) // 4
您必须确保了解valueOf
的工作原理。根据docs :
JavaScript calls the valueOf method to convert an object to a primitive value.
当然,简单地引用对象不会调用valueOf
;那将使您无法引用基础对象。它用于需要将对象强制转换为基本类型的情况,例如 +foo
。
valueOf
本身与 ES6 无关;它适用于所有对象。
关于javascript - 返回 JavaScript 类值而不是对象引用(在 ES6 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970563/