我需要重写Parent方法,并使用NodeJs调用Grandparent方法。有可能吗?
例如:A
和B
是库类。
class A {
printFunction() {
console.log('Hello');
}
}
class B extends A {
printFunction() {
console.log('World');
}
runFunction() {
console.log('Running');
}
}
现在我有一个C
类,它扩展了B
类。
class C extends B {
// can i call class A printFunction here?
}
在C类中,我可以叫A的printFunction
吗?
答案 0 :(得分:2)
您可以使用Function.prototype.call
调用确切的函数:
class C extends B {
callA() {
A.prototype.printFunction.call(this);
}
}
答案 1 :(得分:0)
否,不是因为C类扩展了B类,因为您已经覆盖了B类中的opts := mqtt.NewClientOptions().
AddBroker(broker).
SetClientID(fmt.Sprintf("%s-%v", ProgramName, time.Now().Unix())).
SetUsername(username).
SetPassword(password).
SetOrderMatters(true)
if tlsConfig != nil {
opts.SetTLSConfig(tlsConfig)
}
pahoClient := mqtt.NewClient(opts)
client = &DefaultMQTTClient{
c: pahoClient,
subscribeQoS: subscribeQoS,
publishQoS: publishQoS,
name: name,
log: Log.WithPrefix("mqtt").WithFields(logrus.Fields{
"name": name,
"broker": broker,
}),
}
client.Log().Debug("connecting to mqtt broker")
if err = client.Connect(); err != nil {
err = client.Log().Trace(err, "failed to connect to mqtt broker")
return
}
client.Log().Info("established connection with mqtt broker")
。从C类的角度来看,它并不关心A类对{{1}的定义}是因为现在已对其进行修改。
唯一的方法是让C类扩展A类,并重新定义B类所需的任何功能。