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

标签 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}

最佳答案

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/

相关文章:

java - 父类(super class)使用方法的子类版本?

javascript - 有没有办法减少与其调用者通信的无限生成器中的产量数量?

ecmascript-6 - Symbol() 和 Symbol.for() 的区别

javascript - Mongoose 4.8.1 poolSize 不会超过 2

javascript - 在 jquery post 之后设置 fieldset 单选按钮值

java - 数据在类之间无法正确传输;结果引发 NullPointerException

java - 使用变量创建类与将变量作为参数传递到方法中

javascript - 类型错误 : map is not a function

javascript - 原型(prototype)函数调用返回未定义

javascript - onKeyup 分别获取多个输入字段的值 : Jquery