Student: Klassen- bzw. Objektzuweisung bei Javascript

Hallo,

ich habe ein Problem und zwar muss ich die Klasse Mensch in JS erstellen, die verschiedene Attribute hat.
Wenn ich jetzt einen neuen Menschen einfüge, wird das nicht übernommen und es kommt in der Ausgabe:

"undefined undefined, geboren im Jahr undefined ist undefined Jahre alt."

Hier ist mal der Quelltext:

<script type="text/javascript">

function Mensch (vorname, nachname, geburtsjahr, geschlecht) {
this.vorname = vorname;
this.nachname = nachname;
this.geburtsjahr = geburtsjahr;
this.geschlecht = geschlecht;
}

var mensch1 = new Mensch ("Hans", "Wurst", 1905, "männlich");

document.writeIn(this.vorname+" "+this.nachname+""+",geboren im Jahr "+this.geburtsjahr+" ist "+this.alter+" Jahre alt.")

</script>

Schonmal vielen Dank im voraus :)

  1. Hi,

    function Mensch (vorname, nachname, geburtsjahr, geschlecht) {
    this.vorname = vorname;
    this.nachname = nachname;
    this.geburtsjahr = geburtsjahr;
    this.geschlecht = geschlecht;
    }

    innerhalb der Funktion Mensch(), die hier als Konstruktor herhalten muss, verweist this auf das Funktionsobjekt selbst. Es entsteht also ein Objekt, das eine Funktion (aka Methode) sowie die Eigenschaften vorname, nachname, geburtsjahr und geschlecht hat.

    var mensch1 = new Mensch ("Hans", "Wurst", 1905, "männlich");

    Damit erzeugst du ein Objekt nach dem obigen Bauplan.

    document.writeIn(this.vorname+" "+this.nachname+""+",geboren im Jahr "+this.geburtsjahr+" ist "+this.alter+" Jahre alt.")

    Erstens gibt es kein document.writeIn(), unterscheide bitte zwischen dem Großbuchstaben I und dem Kleinbuchstaben l.
    Zweitens - worauf verweist this hier in diesem Kontext? Vermutlich auf das globale Objekt window; jedenfalls nicht auf das Objekt mit dem Namen mensch1, das du eine Zeile weiter oben erzeugt hast.

    So long,
     Martin

    --
    Dem Philosoph ist nichts zu doof.
    1. Hallo,

      innerhalb der Funktion Mensch(), die hier als Konstruktor herhalten muss, verweist this auf das Funktionsobjekt selbst.

      Auf das Instanzobjekt, nicht auf das Funktionsobjekt. Das ist etwas ganz anderes.

      Es entsteht also ein Objekt, das eine Funktion (aka Methode) sowie die Eigenschaften vorname, nachname, geburtsjahr und geschlecht hat.

      Das Objekt hat keine Methode, sondern nur die besagten Eigenschaften. Wie kommst du darauf? Eine Methode kann ich dem geposteten Quelltext nicht entnehmen.

      Jan

  2. Hallo Student
    so geht das...
    Gruss, André

    document.write(mensch1.vorname+" "+mensch1.nachname+""+",geboren im Jahr "+mensch1.geburtsjahr+" ist "+mensch1.alter+" Jahre alt.")
    -------------------------------------------------------------------

    function Mensch (vorname, nachname, geburtsjahr, geschlecht) {
    this.vorname = vorname;
    this.nachname = nachname;
    this.geburtsjahr = geburtsjahr;
    this.geschlecht = geschlecht;
    }

    var mensch1 = new Mensch ("Hans", "Wurst", 1905, "männlich");

    document.writeIn(this.vorname+" "+this.nachname+""+",geboren im Jahr "+this.geburtsjahr+" ist "+this.alter+" Jahre alt.")

    </script>