정의 : 일련의 알고리즘을 정의하고, 하나씩 함수로 캡슐화하거나, 객체로 캡슐화하여 속성으로 캡슐화 한 다음 메소드를 정의 할 수 있습니다. 이 메소드는 매개 변수를 기반으로 해당 알고리즘을 자동으로 선택하고 실행할 수 있습니다.
함수를 구현할 때 선택할 수있는 옵션이 많이있을 때 일반적으로 사용됩니다.
예 1 : 직원 급여, 성과 성적 S, A, B 및 C를 기준으로 연말 보너스를 계산하십시오.
// 모든 알고리즘을 캡슐화하는 정책 객체 var var 전략 = { 's': function (Salary) {return Salary*4; }, 'a': 함수 (급여) {반환 급여*3; }, 'b': 함수 (급여) {return senary*2; }, 'c': 함수 (급여) {return Salary*1; }} // 자동 선택 알고리즘의 메소드 정의 var calculateBonus = function (level, salary) {return strategies [level] (급여);} // cempulateBonus ( 's', 9000) 사용; // 36000calculateBonus ( 'b', 5000); // 10000예 2 : 양식 확인
// 검증 알고리즘을 정의하는 정책 객체 var var var ratchies = function () {isempty : function (value, errormsg) {if (value = '') {return errormsg; }} 위대방 : 함수 (value, min, max, errormsg) {if (value.length> max || value.length <min) {return errormsg; }} issame : function (OldValue, newValue, errormsg) {if (newValue! == OldValue) {return errormsg; }} ismobile : 함수 (value, errormsg) {if (!/(^1 [3 | 5 | 8] [0-9] {9} $)/. test (value)) {return errormsg; }} ......}다음 유효성 검사기 클래스를 정의 할 수 없으며 초점 손실 이벤트가 트리거되어 현재 입력 항목을 확인할 때 전략 객체의 속성 메소드를 직접 호출 할 수 있습니다.
// validatorvar validator = function () {this.cache = [];} validator.prototype.add = function (elem, rules) {var self = this; for (var i = 0, 규칙 = 규칙 [i ++]) {(function (rule) {var 전략 = rule.strategy.split ( ':'); var errormsg = rule.errormsg; self.cache.push (function () {var strategy = strategy.shift (); 전략. 전략 [전략]. Apply (Elem, Strategyary)}) (Rule)}} validator.prototype = function () {for (var i = 0, func = this.cache [i ++]) {var errormsg = func (); if (errormsg) {return errormsg; }}}사용:
var validator = new validator (); validator.add (elem.username, [{전략 : 'isempty', errormsg : '사용자 이름은 비어있을 수 없다'}, {전략 : '능숙한 : 6 : 12', errormsg : '사용자 이름 길이는 6-12 비트'}];첨부 파일 : 매개 변수 구성 객체
foo (a, b, c, d, e, f ...) 함수가있는 경우 많은 매개 변수가 있으며 이러한 함수는 사용하기 어렵고 매개 변수를 기억하기 어렵습니다! 더 좋은 방법은 객체를 사용하여 이러한 매개 변수를 포함한 다음 객체를 함수로 전달한 다음 객체의 속성을 처리하는 것입니다.
var prop = {a : 55, b : 'ss', c : function () {...} d : {x : 1, y : 2} ...} foo (prop);이런 식으로 함수를 사용할 때 매개 변수 순서를 기억할 필요가 없습니다. 매개 변수 객체의 여러 속성 이름을 기억하십시오.
참고 문헌 : "JavaScript Pattern" "JavaScript 디자인 패턴 및 개발 실습"
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.