Felix Riesterer: mehrere ezeugte Object des selben konstruktors steuern

Beitrag lesen

Lieber mb,

meine Glaskugel sagt mir, dass Du beim Schreiben der entsprechenden Code-Zeilen die völlig falsche Musik dazu gehört hast. Deswegen haben sich metaphysische Schwingungen entwickelt, die die Datenstruktur Deines Browsers durcheinander bringen, weshalb Du nur noch das zuletzt instantiierte Objekt benutzen kannst.

Nee, im Ernst: Du machst anscheinend in Deiner Konstruktor-Funktion irgend etwas mit globalen Variablen, oder Du speicherst das Ergebnis dieser mit "new" als Schlüsselwort genutzten Funktion nicht korrekt ab. Hier ein Beispiel:

function Car (features) {
    this.color = "grey"; // default

    if (features && features.blue) {
        this.color = features.color;
    }

    this.model = "Trabant"; // default

    if (features && features.model) {
        this.model = features.model;
    }

    this.engine = {
        energy: "1kW", // default
        health: 100,
        status: "off"
    };

    if (features && features.energy) {
        this.engine.energy = features.energy;
    }

    this.start = function () {
        this.engine.status = "on";
    }

    this.shutDown = function () {
        this.engine.status = "off";
    }
}

var car1 = new Car({
    model: "Ferrari",
    color: "red",
    energy: "100kW"
});

var car2 = new Car({
    model: "Polo",
    color: "indigo"
});

var car3 = new Car();

// start all cars
[car1, car2, car3].map(function (c) {
    c.start();
});

Liebe Grüße,

Felix Riesterer.