this in Funktion verwenden?
Herr JavaScript
- javascript
hallo.
Ich habe ein problem, welches ich noch nicht als Thema hatte.
Ich habe ein Objekt (um genau zu sein, ein Array):
var chars = new Array()
chars[0]=new Array(52,125,24,623,25,26,"gesichter_5_020.gif");
...
Dabei in der Reihenfolge:
aktuelle HP
maximum HP
aktuelle Exp
maximum Exp
Angriffskraft
Verteidigungskraft
Avatar
Jetzt habe ich eine Funktion:
function Heal(wert) {
if(wert != "full")
{
this[0] += (this[1]-this[0]<wert)?this[1]-this[0]:wert // Heilung
// um wert, wenn wert unter MaxHP - AktHP ist. Ansonsten voll.
}
else
{
this[0] = this[1] // Vollständige Heilung
}
}
Nun. Wie muss ich die Funktion einbinden, damit diese über this zugriff auf das Array hat. Kann ich da jetzt einfach (via Schleife und document.write() eval("this."+funktionen[0]) <Nur ein Beispiel>)
Oder muss ich das extra für das Array fest definieren?
Schon jetzt danke für jede Hilfe
Mit freundlichen Grüßen aus Stendal
Herr JavaScript
Hi,
Nun. Wie muss ich die Funktion einbinden, damit diese über this zugriff auf das Array hat.
das Stichwort lautet Prototyping: Erweitere das Array-Objekt (bzw. alle) um die Methode.
Cheatah
Danke. Ich schau erstmal unter SelfHTML nach, ob ich was finde darüber
Danke für den Tipp.
Hi,
Danke. Ich schau erstmal unter SelfHTML nach, ob ich was finde darüber
wenn Du nicht wirklich weiter kommst, frag bitte nach - JavaScript-Prototyping wird leider netzweit eher stiefmütterlich behandelt.
Cheatah
Hallo,
var chars = new Array()
chars[0]=new Array(52,125,24,623,25,26,"gesichter_5_020.gif");
...
>
> Dabei in der Reihenfolge:
> aktuelle HP
> maximum HP
> aktuelle Exp
> maximum Exp
> Angriffskraft
> Verteidigungskraft
> Avatar
Ah, ich sehe schon, ein Array ist dafür Nonsens. Verwende ein eigenes Objekt mit Eigenschaften und Methoden.
Konstruktor:
~~~javascript
function Character (hp_aktuell, hp_max, exp_aktuell, exp_max, angriffskraft, verteidigungskraft, avatar) {
this.hp_aktuell = hp_aktuell;
this.hp_max = hp_max;
...
this.heal = function (wert) {
if (wert != "full") {
this.hp_aktuell += (this.hp_max - this.hp_aktuell < wert) ? hp_max - hp_aktuell : wert;
} else {
hp_aktuell = hp_max;
}
};
}
Nun. Wie muss ich die Funktion einbinden, damit diese über this zugriff auf das Array hat.
Du musst einen Prototyp, also die oben beschriebene Konstruktor-Funktion schaffen, die du dann intantiierst mit new Character(...):
var chars = new Array()
chars[chars.length] = new Character(52, 125, 24, 623, 25, 26, "gesichter_5_020.gif");
...
Heilen dann mit:
chars[0].heal(wert);
Mathias
Hey. Danke. Das ist genau das, was ich gesucht hatte.
Vielen Dank.
(hatte mit Objekten noch nicht gearbeitet. Aber so ist es auch möglich.)
MFG
Herr JavaScript