2016-04-17 6 views
0

Wie würde man etwas tun, wie folgt aus:Wie legen Sie eine Klassenmethode gleich mehreren Funktionen fest? - Javascript

var turret = new Turret(); 
Turret.prototype.fire = shootMissiles("atAirUnits"), 
shootMachineGun("atInfantry"), 
setReload(); 

turret.fire(); 

Ich möchte wissen, wie man es so machen, dass ein Anruf zu turret.fire(); Anrufe alle dieser Funktionen mit ihren gegebenen Parametern. Beachten Sie, dass die setReload-Funktion weiterhin Zugriff auf this.reloadTime von der Turret-Klasse haben muss. Ich verstehe die Funktionszusammensetzung bis zu einem gewissen Grad, aber damit wird das Ergebnis einer der Funktionen als Argument an das nächste übergeben, was ich nicht will. Weitere Erläuterungen Jede dieser Funktionen, wie z. B. shootMissiles, kann verschiedene oder mehrere Argumente wie "atTanks" oder "atRandom" enthalten. Auch andere Klassen wie RocketSoldier könnten die Funktion shootMissiles in ihrer Feuerfunktion mit unterschiedlichen Parametern nutzen. Eine andere Funktion wie shootMissiles benötigt möglicherweise Zugriff auf Turret-Klassenvariablen wie diese.missileSize. Wenn ich unklar war, bitte kommentieren Sie mit, wie ich es ausarbeiten sollte.

+0

Schreiben Sie eine Funktion, die die Dinge in dieser Reihenfolge nennt? –

+0

Diese Funktionen werden wie Puzzleteile verwendet. Einige Klassen haben vielleicht keine Raketen oder laden nach, aber sie haben ein Maschinengewehr. also müsste ich für jede neue Kombination eine neue Funktion schreiben. –

Antwort

1

Sie suchen:

Turret.prototype.fire = function() { 
    shootMissiles("atAirUnits"); 
    shootMachineGun("atInfantry"); 
    setReload(); 
}; 
+0

Diese Funktionen (shootMissiles, shootMachineGun) sind keine Methoden der Klasse Turret, sie sind global. Ist das wichtig? –

+0

Überhaupt nicht. :) Ich habe meine Antwort bearbeitet. –

+0

Beim Testen Ihrer Antwort stelle ich fest, dass die Funktionen nicht auf Turret-Variablen zugreifen können, indem sie diese Variable aufrufen. Irgendeine Idee warum das wäre? –

Verwandte Themen