Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回JavaScript类值而不是对象引用(在ES6中)_Javascript_Class_Ecmascript 6 - Fatal编程技术网

返回JavaScript类值而不是对象引用(在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

我希望创建一个类,这样它将返回一个值,而不是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}
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课程的试驾。:)