JavaScriptLang

Aus Wiki - Jochen Hammann
Version vom 30. September 2016, 12:30 Uhr von Jochen (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „__TOC__ == Aufruf einer überschriebenen Methode == Der folgende Codeausschnitt zeigt den Aufruf einer überschriebenen Methode einer Basisklasse aus der ü…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen


Aufruf einer überschriebenen Methode

Der folgende Codeausschnitt zeigt den Aufruf einer überschriebenen Methode einer Basisklasse aus der überschreibenden Methode der abgeleiteten Klasse heraus.

// -------------------- [Superclass] --------------------
function Shape() {
    this.x = 0;
    this.y = 0;
}

Shape.prototype.move = function (x, y) {
    this.x += x;
    this.y += y;
    console.info('Shape moved (' + this.x + ', ' + this.y + ')');
};

// -------------------- [Subclass] --------------------
function Rectangle() {
    Shape.call(this); // call super constructor.
}

// Subclass extends superclass
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;

// Override method move()
Rectangle.prototype.move = function (x, y) {
    this.x += x;
    this.y += y;
    console.info('Rectanlge moved: (' + this.x + ', ' + this.y + ')');
    // Call base (overwritten) method.
    Shape.prototype.move.call(this, 2, 2);
};

// ----------------------------------------------------------------------

var rect = new Rectangle();
console.log('Is rect an instance of Rectangle? ' + (rect instanceof Rectangle)); // true
console.log('Is rect an instance of Shape? ' + (rect instanceof Shape)); // true
rect.move(1, 1);