Definição: Defina uma série de algoritmos, encapsulam -os um por um em funções ou podem ser uniformemente encapsulados em um objeto como atributos e, em seguida, definem um método. Este método pode selecionar e executar automaticamente o algoritmo correspondente com base nos parâmetros.
Geralmente é usado em situações em que há muitas opções para escolher ao implementar uma função.
Exemplo 1: Calcule o bônus de final de ano com base no salário dos funcionários, notas de desempenho S, A, B e C.
// O objeto de política que encapsula todos os algoritmos var estratégias = {'s': function (salário) {return salary*4; }, 'A': função (salário) {retorna salário*3; }, 'B': function (salário) {return salary*2; }, 'C': function (salário) {return salary*1; }} // Defina o método do algoritmo de seleção automática var calcularbonus = function (nível, salário) {retornar estratégias [nível] (salário);} // use calcularbonus ('s', 9000); // 36000CalCulateBonus ('B', 5000); // 10000Exemplo 2: Verificação do formulário
// O objeto de política que define o algoritmo de verificação var estratégias = function () {isEmpty: function (valor, errorMsg) {if (value = '') {return errorMsg; }} Outrange: 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 (valor, errorMsg) {if (!/(^1 [3 | 5 | 8] [0-9] {9} $)/. test (value)) {return errorMsg; }} ......}Você também não pode definir a seguinte classe Validator e chamar diretamente o método de atributo do objeto Strategies quando o evento de perda de foco for acionado para verificar o item de entrada atual.
// define validatorVar validator = function () {this.cache = [];} validator.prototype.add = function (elem, regras) {var self = this; para (var i = 0, regra; regra = regras [i ++]) {(function (regra) {var estratsicária = regra.strategy.split (':'); var errrorMsg = regra.errormsg; self.cache.push (function () {var strategyy.shift (); Estratégias [Estratégia] .Apply (Elem, estratégia); if (errorMsg) {return errorMsg; }}}usar:
var validator = new Validator (); validator.add (elem.username, [{Strategy: 'isEmpty', errorMsg: 'nome de usuário não pode estar vazio'}, {Strategy: 'Outrange: 6: 12', erromsg: 'UserName Leng é 6-12 bits'}]);Anexo: objeto de configuração de parâmetro
Se houver uma função Foo (A, B, C, D, E, F ...), possui muitos parâmetros, são difíceis de lembrar essas funções e os parâmetros são difíceis de lembrar! Uma maneira melhor é usar um objeto para conter esses parâmetros e depois passar o objeto para a função e depois processar as propriedades do objeto.
var prop = {a: 55, b: 'ss', c: function () {...} d: {x: 1, y: 2} ...} foo (prop);Dessa forma, não há necessidade de lembrar a ordem dos parâmetros ao usar funções. Lembre -se de vários nomes de atributos do objeto de parâmetro, que não é fácil de cometer erros
REFERÊNCIAS: "Javascript Pattern" "JavaScript Design Pattern and Development Practice"
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.