2017-02-22 5 views
-1

Erstens bin ich neu in Javascript.
Ich versuche eine Webseite zu erstellen, um einige Nummern für ein Spiel zu verfolgen.
Das Spiel beinhaltet die Verfolgung von Statistiken für einen Charakter, in zwei Abschnitten. 1) Base Statistics (Stärke, Geschicklichkeit ...) und 2) Fähigkeiten (Auto, Schwert, Elektronikreparatur, Malerei ...)
Ich habe ein PHP-Skript, um die Stats aufzurufen, mit Eingabefeldern, um sie anzupassen, und ein JavaScript-Code, um sie hinzuzufügen, wenn sie geändert werden. Dies funktioniert gut für die 8 Stats, aber ich habe für jede eine separate Funktion geschrieben (getStrength, getDexterity ...), mit einer getTotal-Funktion, die sie summiert und anzeigt.Wie kann ich dynamisch Funktionen in Javascript erstellen

Ich würde gerne einen ähnlichen Prozess für die 150 Skills verwenden (~ 10 Kategorien mit ~ 15 Skills), ohne 150 separate Funktionen zu schreiben (getDrive, Schwert holen, malen ...) Ich kann die Fertigkeit ziehen Liste aus der Datenbank. Kann ich eine Schleife darüber führen, um die erforderlichen Funktionen zu erstellen?

+0

Es ist möglich, Funktionen innerhalb einer Schleife zu erstellen; Was es in Ihrem Fall braucht, hängt davon ab, zu wissen, was Ihr Code ist. –

+0

NICHT. Verwenden Sie Arrays und Objekte als Container und schreiben Sie eine allgemeine .get() - Funktion, die Sie einem Objekt und einem Namen einer Eigenschaft oder eines Index übergeben. Auf diese Weise brauchen Sie nur 1 Funktion, um an allem statt 1 Funktion für jedes einzelne Stück zu arbeiten. – Shilly

+1

Ich glaube nicht einmal, dass Sie eine Schleife brauchen. Es hört sich so an, als müssten Sie nur Ihre Kategorien und Fähigkeiten als Parameter in der Funktion übergeben. Platziere deine Logik innerhalb der einen Funktion. –

Antwort

0

So würde ich solche Dinge kodieren. Es gibt auch Nachteile für diesen Ansatz (es minimiert nicht gut und so), aber mindestens 200 Funktionen, die alle das gleiche tun, müssen nicht definiert werden:

var Charcter = function Character(name) { 
    this.id = { 
     'name' : name, 
     'class' : 'ranger', 
     'level' : 1 
    } 
    this.stats = { 
     'str' : 10, 
     'dex' : 18, 
     'con' : 14, 
     'int' : 10, 
     'wis' : 16, 
     'cha' : 16 
    }; 
    this.skills = [ 
     'archery', 
     'horsemanship' 
    ]; 
}; 
Character.prototype = { 
    'get' : function get(subType, fieldName) { 
     return this[subType][fieldName]; 
    } 
}; 

var shilly = new Character('shilly'); 

console.log('I am a ' + shilly.get('id', 'class') + ' of level ' + shilly.get('id', 'level')); 
console.log('My second skill is ' + shilly.get('skills', 1) + '.'); 
+0

Ah, ich denke, ich sehe, wie man das benutzt (obwohl ich noch muss schreibe ALLE diese Fähigkeiten in die Charakterdefinition und erinnere dich daran, wie ich die Summe aller Fähigkeiten zusammenfassen muss (eigentlich mit einem Multiplikator nach Kategorie). –

Verwandte Themen