Verändern von Objekteigenschaften mit Funktionen

Dawinartor

Mitglied
Einen wunderschönen guten Abend,
Heute stehe ich vor einem neuen Verständnisproblem:

Mit dem folgenden Code möchte ich die OOP in JavaScript beherrschen lernen:
Code:
//Benutzerdefinierte Klasse zur erstellung von Objekten mit Parameterübergabe:
function fahrzeug(model, farbe, hgs, ps, plaetze){
    //this.aussehen = url('../Bilder/fahrzeug96px'); Wie gebe ich Objekt ein Bild?
    this.Model = model;
    this.Farbe = '#' + farbe;//rgb Angabe!
    this.Hoechstgeschwindigkeit = hgs;
    this.AktuelleGeschwindigkeit = 0;
    this.AktuelleFahrrichtung = "";//Wohin das Auto derzeit schaut.
    this.PS = ps;
    this.Sitzplaetze = plaetze;
    //Startposition des Objektes auf einer Plattform, wie <canvas>:
    this.StartpositionX = 0;
    this.StartpositionY = 0;
    //Test Variable um Fehler zu finden:
    this.blub = 2;
    console.log("Neues Auto wurde erstellt");

//Methoden der einzelnen Objekte:
fahrzeug.bewegen = {
    fahrenVorwaertz: function(){
        fahrzeug.StartpositionX += 1;
        fahrzeug.StartpositionY += 1;
        console.log("Vorwärts gefahren!");
    },
    fahrenRueckwaertz: function(){
        fahrzeug.StartpositionX -= 1;
        fahrzeug.StartpositionY -= 1;
        console.log("Rückwärts gefahren!");
    },
    nachLinksDrehen: function(){//Wie bekomme ich mein Fahrzeug gedreht?
        fahrzeug.StartpositionX = 0;
        fahrzeug.StartpositionY = 0;
    }
   
//Nach der definition der Methoden muss nach dem schließen der letzten Funktion ein Semikolon.
}

//Eine neue Methode wird einfach dran gehangen:
fahrzeug.eigenschaftVeraendern = {
    neuesModel: function(nModel){
        fahrzeug.Model = nModel;
    },
    neueFarbe: function(neueFarbe){
        fahrzeug.Farbe = neueFarbe;
    },
    neueHoechstgeschwindigkeit: function(neueHoechstgeschwindigkeit){
        fahrzeug.Hoechstgeschwindigkeit = neueHoechstgeschwindigkeit;
    },
    neuesBlub: function(nBlub){
        fahrzeug.blub = nBlub;
    }
  }
}
var vwGolf = new fahrzeug('Golf', 422788211, 210, 144, 5);
var fahrzeugInfo2 = document.getElementById("Auto2");
console.log(vwGolf.Model)//Golf
fahrzeugInfo2.innerHTML = vwGolf.eigenschaftVeraendern.name('blaaa');
So und nun habe ich folgende Probleme:
1. Bei der Verwendung der Methode erhalte ich ständig die Fehlermeldung: "DieAutoIndustrie.js:77 Uncaught TypeError: Cannot read property 'name' of undefined".
Ich möchte den Namen des Objektes nachträglich, durch die Methode, verändern.
2. Wie schreibt man die Funktionen Syntax gerecht in JS? Ich habe manche gesehen Die nach der Methodendefinition bei der letzten geschweiften Klammer ein Semikolon setzen. Andere schreiben da nichts. JS aber schreibt da keine Fehlermeldung aus?!
 

httpdigest

Top Contributor
Zwei Fehler:
1. Damit du Eigenschaften auf den Fahrzeug-Objekten hast, musst du das Prototype-Objekt der fahrzeug-Funktion anpassen. Also nicht `fahrzeug.eigenschaftVeraendern = ...` sondern `fahrzeug.prototype.eigenschaftenVeraendern = ...`
2. Nachdem du das gemacht hast, wirst du noch den Fehler bekommen, dass `vwGolf.eigenschaftVeraendern.name` keine Funktion ist, denn das Objekt, welches du eigenschaftVeraendern zuweist, enthält ja auch keinen Schlüssel `name`, dem eine Funktion zugewiesen ist
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JQuery mehrere Funktionen in einem Objekt HTML / CSS 1

Ähnliche Java Themen

Neue Themen


Oben