我有一个相当简单的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自己的方法中实例化一个自己的类是不可能的吗?
答案 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)
}
}