如何在Node.js中调用祖父母方法

时间:2018-09-05 16:14:54

标签: javascript node.js ecmascript-6

我需要重写Parent方法,并使用NodeJs调用Grandparent方法。有可能吗?

例如:AB是库类。

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吗?

2 个答案:

答案 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类所需的任何功能。