Technisch können Sie Funktionen bearbeiten, indem Sie die Funktion der Quellcode über die .toString()
Methode immer dann auf sie String-Manipulationen zu tun Verwenden von Regexp usw. Aber es wäre sehr, sehr chaotisch und ich empfehle es nicht.
Stattdessen geben Sie dem Objekt ein bisschen mehr Struktur.Zuerst trennen rechte und linke Hand Waffen:
var shooter = {
rightHand : function() {},
leftHand : function() {},
fire : function() {}
}
nun die .fire()
Methode shoot (oder Verwendung) machen alle Waffen:
var shooter = {
rightHandWeapon : function() {},
leftHandWeapon : function() {},
fire : function() {
this.rightHandWeapon();
this.leftHandWeapon();
}
}
Nun funktioniert der Code über nichts (da beide Funktionen nichts zu tun) Das bedeutet, dass der obige Code für einen unbewaffneten Schützen steht.
Jetzt können Sie Waffen als Funktionen implementieren:
function shotgun() {
/* code to fire shotgun */
}
function handgun() {
/* code to fire handgun */
}
abgeschlossen sein wir auch die folgende Funktion definieren:
function unarmed() {};
Jetzt können Sie den Shooter Arm von ihm die Waffen zu geben:
// Armed with shotgun
shooter.rightHandWeapon = shotgun;
shooter.fire();
// Armed with shotgun and handgun:
shooter.rightHandWeapon = shotgun;
shooter.leftHandWeapon = handgun;
shooter.fire();
// Armed with TWO shotguns:
shooter.rightHandWeapon = shotgun;
shooter.leftHandWeapon = shotgun;
shooter.fire();
// Disarm the shooter:
shooter.rightHandWeapon = unarmed;
shooter.leftHandWeapon = unarmed;
shooter.fire(); // does nothing
Ich glaube nicht, dass Jason beide Waffen so zusammenfassen will, aber ansonsten scheint es auch eine gute Idee zu sein. – lauriys
Ich stimme zu, es hängt davon ab, was genau Jason erreichen will (es gibt nicht genug Informationen über alle anderen Entitäten) und es hängt auch von der Größe der Anwendung ab. Wenn es groß wird, ist es besser, über Architektur nachzudenken, aber wenn es nur eine kleine App ist, brauchst du wahrscheinlich keine Klassen und anderes Zeug. –
Um zu klären. Ich möchte Optionen, und Ihre Antwort bietet das. –