Heim Web-Frontend js-Tutorial Überprüfen Sie die Implementierung des Strategiemusters

Überprüfen Sie die Implementierung des Strategiemusters

Sep 22, 2017 am 09:47 AM
实现 模式 策略


// 定义策略var strategy = {
    isNotEmpty: function(value, errorMsg){
        if(value === ''){            
        return errorMsg;
        }
    },
    minLength: function(value, length, errorMsg){
        if(value.length < length){            
        return errorMsg;
        }
    },
    mobileFormat: function(value, errorMsg){
        if(!/(^1[3|5|8][0-9]{9}$)/.test(value)){            
        return errorMsg;
        }
    }
}function Validator() {
    this.cache = [];
}
Validator.prototype.add = function(value, rules){
    for(var i = 0, rule; rule = rules[i++];){        
    var self = this;
        (function(rule){
            self.cache.push(function(){
                var strategyRule = rule.strategy.split(':');                
                var strategyName = strategyRule.shift();                // 各位看官注意啦, 如果直接使用[value].concat(strategyRule.push(rule.errorMsg))会出问题
                // 什么问题呢? 
                // strategyRule.push(rule.errorMsg)这货会返回length, 我TM调试了半天!
                strategyRule.push(rule.errorMsg);                
                var arr = [value].concat(strategyRule);                
                return strategy[strategyName].apply(null,arr);
            })
        })(rule);
    }
}
Validator.prototype.check = function(){
    for(var i = 0, checkFn; checkFn = this.cache[i++];){        
    var msg = checkFn();        
    if(msg){            
    return msg;
        }
    }
}var validator = new Validator();
validator.add('12345', [
    {
        strategy: 'isNotEmpty',
        errorMsg: 'in not empty'
    },
    {
        strategy: 'minLength:10',
        errorMsg: 'length is less than 10'
    }
]);var tip = validator.check(); // tip: length is less than 10
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonÜberprüfen Sie die Implementierung des Strategiemusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bewirkt der „Bitte nicht stören'-Modus von WeChat? Was bewirkt der „Bitte nicht stören'-Modus von WeChat? Feb 23, 2024 pm 10:48 PM

Was bewirkt der „Bitte nicht stören'-Modus von WeChat?

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mar 24, 2024 am 11:27 AM

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen?

„Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung „Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung Apr 24, 2024 pm 04:50 PM

„Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mar 24, 2024 pm 06:03 PM

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen

PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge Mar 20, 2024 pm 04:54 PM

PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge

Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Mar 16, 2024 pm 12:57 PM

Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet

Implementierungshandbuch für PHP-Spielanforderungen Implementierungshandbuch für PHP-Spielanforderungen Mar 11, 2024 am 08:45 AM

Implementierungshandbuch für PHP-Spielanforderungen

exe zu php: eine effektive Strategie zur Funktionserweiterung exe zu php: eine effektive Strategie zur Funktionserweiterung Mar 04, 2024 pm 09:36 PM

exe zu php: eine effektive Strategie zur Funktionserweiterung

See all articles