Definition: Definieren Sie eine Reihe von Algorithmen, verkapulieren sie einzeln in Funktionen, oder sie können gleichmäßig in ein Objekt als Attribute eingekapselt werden und dann eine Methode definieren. Diese Methode kann den entsprechenden Algorithmus automatisch basierend auf den Parametern auswählen und ausführen.
Es wird im Allgemeinen in Situationen verwendet, in denen bei der Implementierung einer Funktion viele Optionen zur Auswahl stehen.
Beispiel 1: Berechnen Sie den Bonus des Jahresends basierend auf dem Gehalt der Mitarbeiter, Leistungsklassen S, A, B und C.
// das politische Objekt, das alle Algorithmen var Strategies = {'s': Funktion (Gehalt) {Rückgabegehalt*4; }, 'A': Funktion (Gehalt) {Rückgabegehalt*3; }, 'B': Funktion (Gehalt) {Rückgabegehalt*2; }, 'C': Funktion (Gehalt) {Rückgabegehalt*1; }} // Definieren Sie die Methode des automatischen Selektionsalgorithmus var calcultebonus = Funktion (Ebene, Gehalt) {Rückgabestrategien [Ebene] (Gehalt);} // CalculateBonus ('s', 9000); // 36000CalculateBonus ('B', 5000); // 10000Beispiel 2: Formüberprüfung
// Das politische Objekt, das den Verifizierungsalgorithmus var Strategies = function () {isEmpty: function (value, errormsg) {if (value = '') {return errormsg; }} Outrangle: function (value, min, max, errormsg) {if (value.Length> max || value.length <min) {return errormsg; }} issame: function (oldValue, newValue, errormsg) {if (newValue! == OldValue) {return errormsg; }} ismobile: function (value, errormsg) {if (!/(^1 [3 | 5 | 8] [0-9] {9} $)/. test (value)) {return errormsg; }} ......}Sie können die folgende Validator -Klasse auch nicht definieren und die Attributmethode des Strategienobjekts direkt aufrufen, wenn der Verlust des Fokusereignisses ausgelöst wird, um das aktuelle Eingabemittel zu überprüfen.
// Define validatorVar validator = function () {this.cache = [];} validator.prototype.add = Funktion (Elem, Regeln) {var self = this; für (var i = 0, regel; regel = Regeln [i ++]) {(Funktion (Regel) {var Strategyary = regel.strategy.Split (':'); var errormsg = regel.rormsg; self.cache.push (function () {var Strategy = Strategyary.Shift (); Strategien [Strategie] .Apply (Elem, Strategyary); if (errormsg) {return errormsg; }}}verwenden:
var validator = new validator (); validator.add (Elem.Unername, [{Strategie: 'Isempty', Errormsg: 'Benutzername kann nicht leer sein'}, {Strategie: 'Outrangle: 6: 12', Errormsg: 'Benutzername Länge 6-12 Bits'}];Anhang: Parameterkonfigurationsobjekt
Wenn es eine Funktion gibt (a, b, c, d, e, f ...), gibt es viele Parameter, solche Funktionen sind schwer zu verwenden und Parameter sind schwer zu erinnern! Eine bessere Möglichkeit besteht darin, ein Objekt zu verwenden, um diese Parameter zu enthalten, das Objekt dann an die Funktion zu übergeben und dann die Eigenschaften des Objekts zu verarbeiten.
var prop = {a: 55, b: 'ss', c: function () {...} d: {x: 1, y: 2} ...} foo (prop);Auf diese Weise müssen sich die Parameterreihenfolge bei der Verwendung von Funktionen nicht erinnern. Erinnern Sie sich nur einige Attributnamen des Parameterobjekts, die nicht einfach zu machen sind
Referenzen: "JavaScript -Muster" "JavaScript -Designmuster und Entwicklungspraxis"
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.