我有一个相当简单的容器示例,它存储一个值并允许您单独对其进行操作。
出于我自己的兴趣,我已将该对象的基本结构从 .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/