【发布时间】:2018-03-12 04:51:24
【问题描述】:
我根据 MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) 的官方示例创建了一个类
这是我的代码
class A {
}
const Mixer = BaseClass => class extends BaseClass {
static val = 10;
}
class B extends Mixer(A) {
myMethod() {
// Need some way to access the static member "val"
}
}
如何访问“val”?
如果没有 mixin(即 B 类扩展 A,而 val 是 A 类中的静态变量),我可以完成“A.val”。
在这种情况下,Mixer.val 不起作用,并且根据我的理解 B 从匿名类扩展,因此无法通过名称访问超类。
编辑:我问错了。我真正的问题是在 Mixer 本身中访问 val 。正如我的答案所指出的那样,在 B 中访问 val 很简单。
例如
const Mixer = BaseClass => class extends BaseClass {
static val = 10;
myMethod2() {
// log the val member
}
}
【问题讨论】:
-
您不能使用 ES2015 类语法 (
SyntaxError: bad method definition) 定义静态属性。 -
我正在使用 Babel,它确实为我生成了代码。这个 babel 是特定的吗?
-
没错,我正在使用这个。那么我的问题有什么解决方案吗?
-
不,我想不出解决办法。因为,正如你所说,你失去了对超类的引用。
标签: javascript ecmascript-6 es6-class ecmascript-next