返回JavaScript类值而不是对象引用(在ES6中)
我希望创建一个类,这样它将返回一个值,而不是ES6中的class对象 这与ES6中的问题几乎相同。稍微涉及一下,但仍然必须显式调用属性 我想做一些类似的事情:返回JavaScript类值而不是对象引用(在ES6中),javascript,class,ecmascript-6,Javascript,Class,Ecmascript 6,我希望创建一个类,这样它将返回一个值,而不是ES6中的class对象 这与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
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无关;它适用于所有对象。为什么要这样做?这似乎没有道理。你到底想解决什么问题?foo是一个对象,而不是一个基元类型,如果你只需要获取一个值,就使用一个常规的var值
如果你不想创建一个看起来像类的东西,就使用一个返回值的函数。如果你不想要一个类,为什么要创建一个类呢!我正在创建一个货币类。因此它需要保留一个浮点值并返回一个字符串值。例如,4.5689和“$4.57”。我已经创建了一个库,可以在帮助器函数中实现这一点。我只是想参加ES6课程的试驾。:)