Spędziłem ostatnie kilka godzin próbując znaleźć rozwiązanie mojego problemu, ale wydaje się to beznadziejne.Jak wywołać metodę rodzica z klasy potomnej w javascript?
Zasadniczo muszę wiedzieć, jak wywołać metodę macierzystą z klasy dziecko. Wszystkie rzeczy, które próbowałem do tej pory, nie działają lub przepisują metodę nadrzędną.
Używam następujący kod do utworzenia OOP javascript:
// SET UP OOP
// surrogate constructor (empty function)
function surrogateCtor() {}
function extend(base, sub) {
// copy the prototype from the base to setup inheritance
surrogateCtor.prototype = base.prototype;
sub.prototype = new surrogateCtor();
sub.prototype.constructor = sub;
}
// parent class
function ParentObject(name) {
this.name = name;
}
// parent's methods
ParentObject.prototype = {
myMethod: function(arg) {
this.name = arg;
}
}
// child
function ChildObject(name) {
// call the parent's constructor
ParentObject.call(this, name);
this.myMethod = function(arg) {
// HOW DO I CALL THE PARENT METHOD HERE?
// do stuff
}
}
// setup the prototype chain
extend(ParentObject, ChildObject);
muszę wywołać metodę rodzica, a następnie dodać trochę więcej rzeczy do niego w klasie podrzędnej.
W większości języków OOP, które byłyby tak proste, jak wywoływanie parent.myMethod()
Ale naprawdę nie mogę zrozumieć, jak to się robi w javascript.
Każda pomoc jest doceniana, dziękuję!
Jeśli chcesz nazwać w kontekście bieżącej instancji, trzeba zrobić 'ParentClass.prototype.myMethod.apply() lub' ParentClass.prototype.myMethod.call() ', jak to zrobić z twoim konstruktorem. – JMM
Wystarczy dodać, że jeśli chcesz wywoływać z argumentami, wchodzą one do funkcji apply lub call ('ParentClass.prototype.myMethod.call (this, arg1, arg2, arg3 ...);') –
Nie mam Rozumiesz. Jeśli zadzwonię do ParentClass.prototype.myMethod.call (this); z myMethod ChildObject's, mam błąd "Uncaught TypeError: Can not read property 'call' of undefined". – zhekaus