[JS] "Ableitung" und Methodenaufruf der Basisklasse.

Robs

Grünschnabel
Hallo!

Bin ziemlich neu in js (komme von java/c++), daher bitte um nachsicht bei den Sachen, die ich schreibe ^^

Ich möchte, dass eine Klasse B alle Methoden und Variablen von Klasse A erbt. Das passiert bei mir mit A.call(this). Das ist genau dass, was ich für die Ableitung brauche. Jetzt möchte ich aber in der toString-Methode von B die toString-Methode von der Basisklasse A aufrufen.

Ich habe schon einige Stunden gegoogelt und einfach nirgends die passende Lösung gefunden. Es kann natürlich auch sein, dass es so nicht geht (ich hoffe aber doch ^^). Aja, hier mein Code um es noch besser zu erklären:

Code:
counter = 0;
function A() {
	var index = counter++;

	this.getIndex = function() {
		return index;
	}

	this.toString = function() {
		return "A: " + index;
	}
}

function B() {
	A.call(this);

	this.toString = function() {
		return "B" + *A.toString()*; // hier sollte toString von A aufgerufen werden.
	}
}

var b1 = new B();
var b2 = new B();
document.write(b1 + " ?= " + b1.getIndex() + "<br>");
document.write(b2 + " ?= " + b2.getIndex() + "<br>");

Die Ausgabe, die ich erreichen will, ist dann:
BA 0 ?= 0
BA 1 ?= 1

Danke schonmal im Vorraus!
PS: Das Beispiel ist stark vereinfacht, sollte jedoch das Problem gut darstellen.
 
Bevor du toString überschreibst, merkst du dir das vorherige.

Javascript:
function B() {
	A.call(this);
	
	var oldToString = this.toString;

	this.toString = function() {
	    return "B" + oldToString.call(this);
	}
}
 
Zurück