如何复制Javascript构造函数&类语法

时间:2017-10-07 02:46:25

标签: javascript class prototype

我有一个相当简单的Container示例,它可以存储一个值,并允许您单独操作它。

为了我自己的兴趣,我已将此对象的基本结构从.prototype翻译为类语法。但是这个例子使用了一个时髦的方法来创建这个对象的新实例,我无法弄清楚如何在类语法中复制它(参见下面的代码)

const Container = function(x) {
  this.val = x
}

Container.prototype.map = function(f) {
  return Container.of(f(this.val))
}

Container.of = function(x) { return new Container(x) } // Problem spot

这转化为(类语法):

class Container {
  constructor(x) {
    this.val = x
  }

  map(f) {
    return Container.of(f(this.val))
  }

  of = (x) => {                       // ????????
    return new Container(x)
  }
}

我认为问题在于“of”方法只是简单地绑定到“Container”的单个原始实例作为帮助器,以便每次想要旋转时更容易不必编写“new”这个类的实例。但我无法弄清楚如何使用类语法复制绑定。

从classe自己的方法中实例化一个自己的类是不可能的吗?

1 个答案:

答案 0 :(得分:1)

只需将函数声明为static

class Container {
  constructor(x) {
    this.val = x
  }

  map(f) {
    return Container.of(f(this.val))
  }

  static of(x) {                       // ????????
    return new Container(x)
  }
}