Herr JavaScript: this in Funktion verwenden?

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

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Danke. Ich schau erstmal unter SelfHTML nach, ob ich was finde darüber

      Danke für den Tipp.

      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. 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

    1. 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