美文网首页
JavaScript装饰者模式

JavaScript装饰者模式

作者: 晓蟲QwQ | 来源:发表于2021-01-03 21:28 被阅读0次

    给对象动态添加或修改功能。在静态语言中通过新对象引用旧对象地方式添加,最终形成包装链。

    在JavaScript中可以使用AOP来实现装饰模式

    插件式的表单验证

        <body>
            用户名: <input type="text" name="username" id="username" value="" />
            密码: <input type="password" name="passwrod" id="passwrod" value="" />
            <input type="button"  id="submitBtn" value="提交" />
        </body>
        <script type="text/javascript">
            var username = document.getElementById('username'),
                password = document.getElementById('passwrod'),
                submitBtn = document.getElementById('submitBtn');
                
            Function.prototype.before = function( beforefn ){
                var _self = this;
                return function(){
                    if( beforefn.apply(this,arguments) === false ){
                        return;
                    }
                    return _self.apply( this, arguments);
                }
            }
            
            var validata = function(){
                if( username.value === ''){
                    alert('用户名不能为空');
                    return false;
                }
                
                if( password.value ==='' ){
                    alert('密码不能为空');
                }
            }
            
            var formSubmit = function(){
                var param = {
                    username: username.value,
                    password: password.value
                }
                ajax('http://xxx.com/login',param);
            }
            
            //添加装饰
            formSubmit = formSubmit.before(validata);
            
            submitBtn.onclick = function(){
                formSubmit();
            }
    
    • 以上的装饰模式会叠加函数的作用域,装饰链过长会影响性能。
    • 由于是放回新函数,所以会丢失原函数的属性。

    相关文章

      网友评论

          本文标题:JavaScript装饰者模式

          本文链接:https://www.haomeiwen.com/subject/biluoktx.html