Verwenden von Funktionen zu initialisieren und zu Entscheidungen zu treffen JavaScriptVerwenden von Funktionen zu initialisieren und zu Entscheidungen zu treffen Problem Sie wollen Funktionen nutzen zu initialisieren und zu Entscheidungen zu treffen. Theory Normalerweise, wenn Sie schreiben, ein Stück Code, wenn ein Wechsel der Logik muss Platz auf dem Hintergrund der Grundlage zu nehmen, verwenden Sie eine Entscheidung Struktur. Angenommen, Sie sind dabei, ein Lichtschalter mit einem Programm. Sie machen das Licht an, wenn das Licht ausgeschaltet ist, und Sie das Licht auszuschalten, wenn das Licht eingeschaltet ist. Das Verhalten des Programms wird durch die Bedingungen bestimmt. Ein Beispiel Verhalten, das einen genaueren Blick verdient, ist die Initialisierung. Initialisierung der Regel sollte nur geschehen, wenn es nicht schon hat. Die Initialisierung ist wichtig, weil die Initialisierung der Logik des Standard-Rahmen für Ihre Anwendung ordnungsgemäß funktioniert schafft. Lösung für illustrative Zwecke, lassen Sie uns anhand eines Beispiels zu gehen, wo eine Funktion eine Initialisierung, die innerhalb der Funktion eingebettet ist, erfordert. Die Logik ist eine Initialisierung durchführen, wenn es nicht bereits geschehen ist. Die Funktion, die aufgerufen wird, ist wie folgt definiert, und es bindet einen Aufruf an die Initialisierung.
Tipp Man könnte diese Art von Code verwenden, um eine verzögerte Initialisierung beim Schreiben convention-basierte Umsetzung Code, der nicht eine explizite Initialisierung durchzuführen. Quelle: / website / ROOT / ajaxrecipes / javascript / makingdecisionsinitialization.html Funktion ClassicalManipulateObject (obj) (info ( "ClassicalManipulateObject", "Starten"); if (! didInitialize) ( DoInitialization (obj); ) else ( info ( "ClassicalManipulateObject", "keine Initialisierung erforderlich"); )assertEquals (3, obj.value); info ( "ClassicalManipulateObject", "Ending");)
Eine weitere Lösung ist der Initialisierung Funktionalität nicht als eine Entscheidung zu denken, aber als Staat. Es ist eine erste Staat, der eine Initialisierung durchzuführen ist, und einem anderen Staat keine Initialisierungen auszuführen. In einem gewissen Sinne der didInitialize Variable ist eine Vertretung des Staates. Keeping diesem Gedanken im Hinterkopf, wissen Sie, dass JavaScript seine Funktionen als Objekte behandelt. So, die didInitialize Variable kann eine Funktion und nicht eine Boolesche Variable. Behandlung des Staates als eine Variable, die auf ein Funktion macht es möglich, die Funktion, die eine Initialisierung erforderlich vereinfachen. Die Umsetzung der ClassicalManipulateObject Funktion wird geändert, um ManipulateObject, wie im folgenden Code dargestellt. Quelle: / website / ROOT / ajaxrecipes / javascript / makingdecisionsinitialization.html Funktion ManipulateObject (obj) (info ( "ManipulateObject", "Starten"); InitializeObject (obj);assertEquals (3, obj.value); info ( "ManipulateObject", "Ending");) In der modifizierten Ausführung, der kühne Code stellt erneut die Initialisierung Funktionalität. Hier gibt es keine Entscheidung, nur eine Funktion aufrufen, InitializeObject. Vielleicht denken Sie: "Ich könnte die gleiche Sache mit den Entscheidungen beruhende Initialisierung, da die Entscheidung umgesetzt wird in InitializeObject getan haben." Aber das ist falsch, weil bei der Umsetzung der InitializeObject, gibt es keine Entscheidung. Die Umsetzung der InitializeObject initialisiert die Variable und dann ermöglicht die Bearbeitung fortgesetzt werden. Wenn es keine Entscheidung darüber, ob die Initialisierung aufgetreten ist, InitializeObject ist eine Funktion, um den Zustand zu initialisieren, dann für jeden Aufruf der Staat wird initialisiert werden, kann man nicht nennen diese Initialisierung Funktionalität. Die Magie ist in der Tatsache, dass JavaScript-Funktionen behandelt als Objekte. Die Umsetzung der InitializeObject ist wie folgt: Funktion InitializeObject (obj) (obj.value = 3; info ( "InitializeObject", "tut Initialisierung"); InitializeObject = InitializeEmptyObject;) Bei der Durchführung des InitializeObject, der obj-Parameter auf einen Wert von 3 initialisiert, und der kühne Code zeigt die Umverteilung der InitializeObject Funktion. Die zugewiesen InitializeObject verweist auf eine Funktion ohne Körper, was bedeutet, dass zum ersten Mal InitializeObject genannt wird, die Initialisierung durchgeführt worden ist, aber jeder Anruf danach ist eine leere Funktion aufrufen, die nichts tut. Dies ist die vollständige Umsetzung der Initialisierung Funktionalität ohne die Verwendung einer einzigen Entscheidung oder variabel sein. Ein Vorteil dieses Ansatzes ist, dass Sie nicht brauchen, um herauszufinden, welche Variable Kreuz-Referenz mit der Funktion. Die Funktion kümmert sich selbst, und der Anrufer kann keep calling InitializeObject, wohl wissend, dass alles gesorgt sein wird. Ein weiterer Vorteil dieses Ansatzes ist, dass man einen Staat Motor, wo die nächste Zustand wird durch die Ausführung des aktuellen Status ermittelt erstellen . Es gibt keine zentral gelegen Entscheidung blockieren, dass die allgemeine Ablauf der Ausführung bestimmt und muss aktualisiert werden jedes Mal, wenn ein neuer Staat muss integriert werden. In der Regel beim Schreiben von Code in einer Sprache wie Java, C # oder C + +, gehen Sie nicht um Umwidmung eines die Umsetzung der Funktion. Und weil dieses Verhalten ist in den Köpfen der Entwickler verwurzelt, sie nicht sogar überlegen, das zu tun. Doch gibt es überhaupt kein Problem Neuzuweisung der Aufgaben in JavaScript, da Funktionen Objekte sind. Funktionen sind nicht eindeutige Kennungen mit einzigartigen Funktionen, wie Sie an sie denken, wenn mit ihnen arbeiten in anderen Sprachen. Die Umsetzung der InitializeObject Werke und ist eine komplette Lösung. Aber es gibt eine kleine Unannehmlichkeiten, die einst in InitializeObject muss eine leere Funktion zugewiesen wurde, ist die Initialisierung einer Funktionalität, bis der HTML-Seite verloren geht aktualisiert. Bei einigen der Probleme, dass eine akzeptable Lösung ist. Zum Beispiel, Sie wickeln XMLHttpRequest nur einmal, weil Sie XMLHttpRequest kann nur eine bestimmte Browser-spezifischen Art und Weise zu instanziieren. Es gibt einige Fälle, aber, wenn Sie vielleicht zurückgesetzt und wieder zu initialisieren und in der Lage sein zu tun, dass Sie die InitializeObject in eine Funktion innerhalb einer Funktion wrap, wie im folgenden Beispiel veranschaulicht werden müssen. Quelle: / website / ROOT / ajaxrecipes / javascript / makingdecisionsinitialization.html Funktion ResetInitializeObject () (InitializeObject = function (obj) (obj.value = 3; info ( "InitializeObject", "tut Initialisierung"); InitializeObject = InitializeEmptyObject;)) ResetInitializeObject ( ); Die InitializeObject Funktion ist eine Variable, die eine Funktion zugeordnet ist, die Umsetzung in den ResetInitializeObject Kontext. Rezept 2-4 zeigt, dass es keinen Unterschied, wie eine Funktion deklariert wird, auch wenn es scheint, gerade oder fehl am Platz. Um InitializeObject zu initialisieren, ist die ResetInitializeObject Funktion aufgerufen, wodurch die Funktion InitializeObject. InitializeObject Und wenn er gerufen wird sich auf eine leere Funktion zuweisen. Calling ResetInitializeObject wieder setzt die Initialisierung, so dass InitializeObject an den Staat zu initialisieren und sich selbst wieder zurücksetzen. Aus diesem Beispiel können Sie sehen, dass eine Entscheidung nicht umgesetzt werden müssen mit einer if-Anweisung. Ein weiteres Beispiel, das veranschaulicht, wie ein Staat Engine umgesetzt werden könnten folgt. Das Beispiel implementiert ein Lichtschalter, wo, wenn das Licht eingeschaltet ist, wird es ausgeschaltet ist, und umgekehrt. Beachten Sie, dass nicht eine einzige if-Anweisung in diesem Beispiel verwendet. Quelle: / website / ROOT / ajaxrecipes / javascript / makingdecisionsinitialization.html Funktion ToggleLight () (ToggleLight.on = function () (ToggleLight.curr = ToggleLight.off return "on";) ToggleLight.off = function () (ToggleLight.curr = ToggleLight.on return "off";) try (return ToggleLight.curr ();) catch (e) (info ( "ToggleLight", "Initialisierung ..."); return ToggleLight.on ();)) Die Funktion ToggleLight wird aufgerufen, wenn Sie das Licht ein-oder auszuschalten. Es gibt keine Parameter, um ein auf oder weisen auf eine Ab-; die Funktionalität innerhalb der ToogleLight Funktion eingebettet. In der ToggleLight Umsetzung gibt es zwei Eigenschaften, ein-und ausschalten, die beide Funktionen. Die Funktion weist auf die curr Eigenschaft aus und kehrt ein "auf" Puffer. Die Aus-Funktion ordnet die curr Eigenschaft aus und kehrt ein "off"-Puffer. Zum Umschalten des Staates, der curr Eigenschaft, die als eine Funktion definiert ist, aufgerufen wird. Die Berufung des curr ist eine Ausnahme-Block eingebettet, weil curr nicht initialisiert werden zum ersten Mal ToggleLight werden aufgerufen wird. So wird eine Ausnahme ausgelöst, und in die Fänge Teil der Ausnahme-Block, der auf dem Grundstück (die eine Funktion) aufgerufen wird. Bei Anrufen über vergibt automatisch curr und initialisiert den Staat. Es ist wichtig, daran zu erinnern, dass die Verwendung einer Ausnahme-Block und die auf die akzeptabel ist, weil es ein Weg für die Umsetzung verzögerte Initialisierung. Wenn die Entscheidung schriftlich Blöcke und Funktionen, denke über den Zustand und die folgenden Aspekte dieses Rezept: • Ihr Programm muss nicht zählen, wie viele Entscheidungen, denn Entscheidungen, die verschiedene Staaten ersetzt worden ist. • Sie können die Funktionen neu zuordnen, wenn Sie brechen kann, das Problem in einen Zustand Motorproblem. • Sie können flexibler gestaltet werden mit Funktionen zugewiesen, weil Verhalten kann dynamisch ersetzt. Zum Beispiel, wenn Sie eine Zwei-Phasen-Initialisierung mit einer Entscheidung, das heißt, wenn zusätzliche Anweisungen verändert sich in zentraler Lage des Quellcodes. Mit einer Funktion zugewiesen, erstellen Sie einen Zustand Motor in dem das Verhalten während der Laufzeit auf der lokalen Ebene verändert werden kann. • Wenn Sie anhand von Beispielen dieses Rezept zu lesen, haben Sie vielleicht gedacht, "Warum nicht einen Klassen-und Objekt?" Die Antwort ist, dass eine Funktion ein Objekt und der Beispiele ist die objektorientierte Programmierung. Der Code sieht seltsam, weil wir in der Regel eine Funktion annehmen, ist eine Funktion verwendet, um eine Klasse zu erstellen, und dass der Unterricht in der Regel nicht funktioniert. Wenn die Schreibweise stört Sie, mein Rat ist, lassen Sie diese Funktion von JavaScript-Eintopf in Ihrem Kopf ein wenig. Sie wird sicher kommen um zu sehen, es ist ein wirkungsvolles Mittel zur Programmierung. Hinweis Ein weiteres Beispiel für Rekursion anstelle von Entscheidung blockiert. Ein Artikel eingereicht von Sonja Lande Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle. Wichtig: Dieser Artikel "Verwenden von Funktionen zu initialisieren und zu Entscheidungen zu treffen JavaScript" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.
|
|||||
| Online: 259 users browsing the articles directory |
|
|