javascript - 如何使用类语法复制 Javascript 构造函数和原型(prototype)对象

标签 javascript class prototype

我有一个相当简单的容器示例,它存储一个值并允许您单独对其进行操作。

出于我自己的兴趣,我已将该对象的基本结构从 .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”方法只是绑定(bind)到“Container”的单个原始实例作为帮助器,以便更容易不必每次想要启动一个容器时都编写“new”这个类的实例。但我不知道如何使用类语法来复制绑定(bind)。

是否无法从类自己的方法之一实例化自己的类?

最佳答案

只需将函数声明为静态即可。

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

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

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

关于javascript - 如何使用类语法复制 Javascript 构造函数和原型(prototype)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46616181/

相关文章:

Javascript 替换函数不替换所有

javascript - html5 maxlength的最清晰的通知方法是什么,或者是否可能?

javascript - 如何在谷歌地图上突出显示/选择不同的区域?

java - 如何创建现有类的新实例?

javascript - php HTTP_USER_AGENT 变量帮助检测浏览器

C++ 复制构造函数和运算符

c++ - 重载下标运算符不返回指针

javascript - JavaScript 中有没有没有原型(prototype)的对象吗?

c - 为什么函数原型(prototype)在不同的函数 block 中?

javascript - 有没有办法在原型(prototype)中使用函数参数作为 getter ?