返回JavaScript类值而不是对象引用(在ES6中)

时间:2015-06-22 00:08:30

标签: javascript class ecmascript-6

我正在寻找创建一个类,以便它在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}

1 个答案:

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