Définition: Définissez une série d'algorithmes, les encapsuler une par une en fonctions, ou ils peuvent être uniformément encapsulés dans un objet comme attributs, puis définir une méthode. Cette méthode peut automatiquement sélectionner et exécuter l'algorithme correspondant en fonction des paramètres.
Il est généralement utilisé lorsqu'il existe de nombreuses options à choisir lors de la mise en œuvre d'une fonction.
Exemple 1: Calculez le bonus de fin d'année en fonction du salaire des employés, des notes de performance S, A, B et C.
// l'objet politique qui résume tous les algorithmes var stratégies = {'s': function (salaire) {return salaire * 4; }, 'A': fonction (salaire) {return salaire * 3; }, 'B': fonction (salaire) {return salaire * 2; }, 'C': fonction (salaire) {retour de retour * 1; }} // Définissez la méthode d'algorithme de sélection automatique var calculbonneus = fonction (niveau, salaire) {Stratégies de retour [niveau] (salaire);} // utiliser calculbonneus ('s', 9000); // 36000 calculatel ('b', 5000); // 10000Exemple 2: Vérification du formulaire
// l'objet de stratégie qui définit l'algorithme de vérification var stratégies = function () {isEmpty: function (value, errormsg) {if (value = '') {return errormsg; }} standangle: fonction (valeur, min, max, errormsg) {if (value.length> max || value.length <min) {return errormsg; }} issame: function (oldvalue, newValue, errormsg) {if (newValue! == OldValue) {return errormsg; }} ismobile: fonction (valeur, errormsg) {if (! / (^ 1 [3 | 5 | 8] [0-9] {9} $) /. test (valeur)) {return errormsg; }} ......}Vous ne pouvez pas non plus définir la classe Validator suivante et appeler directement la méthode d'attribut de l'objet Stratégies lorsque l'événement de perte de mise au point est déclenché pour vérifier l'élément d'entrée actuel.
// définir ValidatorVar Validator = function () {this.cache = [];} validator.prototype.add = fonction (elem, règles) {var self = this; pour (var i = 0, règle; règle = règles [i ++]) {(function (règle) {var stratégiesy = règle.strategy.split (':'); var errormsg = rule.errormsg; self.cache.push (function () {var stratégies = strategary.shift (); Strategyary.unshift (elem.value); Strategyary.push (errorm); Stratégies [Stratégie] .Apply (Elem, Strategyary);})}) (règle)}} validator.prototype.start = function () {pour (var i = 0, func; func = this.cache [i ++]) {var errormsg = func (); if (errormsg) {return errormsg; }}}utiliser:
var validator = new Validator (); validator.add (elem.username, [{stratégie: 'isEmpty', errormsg: 'username ne peut pas être vide'}, {stratégie: 'devandangle: 6: 12', errormsg: 'le nom d'utilisateur est 6-12 bits'.Attachement: objet de configuration des paramètres
S'il existe une fonction FOO (A, B, C, D, E, F ...), il a de nombreux paramètres, ces fonctions sont difficiles à utiliser et les paramètres sont difficiles à retenir! Une meilleure façon consiste à utiliser un objet pour contenir ces paramètres, puis à passer l'objet à la fonction, puis à traiter les propriétés de l'objet.
var prop = {a: 55, b: 'ss', c: function () {...} d: {x: 1, y: 2} ...} foo (prop);De cette façon, il n'est pas nécessaire de se souvenir de l'ordre des paramètres lors de l'utilisation des fonctions. N'oubliez pas plusieurs noms d'attribut de l'objet de paramètre, qui n'est pas facile à faire des erreurs
Références: "modèle javascript" "modèle de conception JavaScript et pratique de développement"
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.