【发布时间】:2017-10-18 08:44:04
【问题描述】:
我正在尝试向类中添加额外的方法,这些额外的方法应该使用super 方法。
如果我将它们添加到模型定义中,它会起作用。
class A {
doSomething() {
console.log('logSomething');
}
}
class B extends A {
doSomething() {
super.doSomething();
console.log('logSomethingElse');
}
}
如果我尝试将额外的方法添加到B.prototype,我会得到SyntaxError: 'super' keyword unexpected here。
class A {
doSomething() {
console.log('logSomething');
}
}
class B extends A {
}
B.prototype.doSomething = function doSomething() {
super.doSomething();
console.log('logSomethingElse');
}
很清楚,为什么我会收到此错误。这是一个函数而不是类方法。
我们尝试将方法定义为类方法,并将其复制到原来的B类中:
class A {
doSomething() {
console.log('logSomething');
}
}
class B extends A {}
class X {
doSomething() {
super.doSomething();
console.log('2 logSomethingElse');
}
}
B.prototype.doSomething = X.prototype.doSomething;
在这种情况下,我会收到TypeError: (intermediate value).doSomething is not a function。
有没有办法在原始类定义之外定义方法(引用super),然后将这些方法添加到原始类中?
【问题讨论】:
-
抱歉,我作为stackoverflow.com/questions/36273140/… 的副本匆忙关闭了 - 但这是关于调用
super()而不是超类上的方法。很确定答案可能是一样的
标签: javascript class ecmascript-6