Hi Simy,
hier gibt es wohl ein paar Missverständnisse.
Beispiel:
<script language="JavaScript">
function TestObj(einName){
/*
Dies ist eine Funktion mit besonderer Bedeutung. Da durch
sie ein Objekt angelegt oder "konstruiert" wird, bezeichnet man sie auch als den "Konstruktor" des Objekts.
*/
this.name = einName;
/*
Die Eigenschaft 'name' dieses Objekts ist eine Variable, der in diesem Fall der Wert der Parametervariablen 'einName' zugewiesen wird. 'name' ist implizit eine Variable, auch OHNE bei der Deklaration/Initialisierung den Bezeichner "var" verwendet zu müssen!
Die Parametervariablen sind übrigens auch LOKALE Variablen.
*/
this.GibNamen = GibNamen; // (ohne Klammern)
this.SetzeNamen = SetzeNamen;
/*
Die Eigenschaft 'GibNamen' dieses Objektes ist implizit eine Methode, da ihr - und nur deswegen - eine Funktion zugewiesen wurde.
*/
alert(this.GibNamen());
var neuerName = "Müller";
// dies ist eine lokale Variable, nur gültig in diesem Konstruktor oder allgemein Anweisungsblock.
this.SetzeNamen(neuerName);
// oder: this.name = neuerName;
alert(this.GibNamen());
// ACHTUNG: jetzt definierst Du eine GLOBALE Variable
globalerName = "Schulz";
// ACHTUNG: jetzt definierst Du eine LOKALE Variable
var lokalerName = "Schmitt";
} // end constructor
function GibNamen(){
return this.name;
}
function SetzeNamen(einName){
this.name = einName;
}
// Script-"Body"
/*
Jetzt wird eine Instanz des Objektes erzeugt, dessen Eigenschaften zuvor im Konstruktor definiert wurden.
*/
test = new TestObj("Paul Meier");
/*
test ist eine globale Variable, genauso geht:
var test = new TestObj("Paul Meier");
siehe dazu Thomas Mells Posting
*/
// jetzt greifst Du auf die GLOBALE Variable zu, die du im Konstruktor deklariert und initialisiert hast.
test.SetzeNamen(globalerName);
alert(test.GibNamen());
// jetzt greifst Du auf die LOKALE Variable zu, die du im Konstruktor deklariert und initialisiert hast.
test.SetzeNamen(lokalerName);
// SO, JETZT MÜSSTEST DU EINEN SCRIPTFEHLER ERHALTEN HABEN ;-)))
</script>
vielleicht ist es Dir jetzt etwas klarer geworden.
Grüße,
Martin