美文网首页
js装饰者模式

js装饰者模式

作者: 万里独行采花贼 | 来源:发表于2019-01-31 02:26 被阅读0次

定义:不改变原类型的条件下,丰富原类型的操作。类型一般是类。
例一:经典的aop

Function.prototype.calculate=function(){
        let date1=new Date();
        this.apply(this);
        let date2=new Date();
        console.log('calculate',date2-date1)
    }
    function test(){
        for(let i=0;i<100000;i++){

        }
        console.log("test")
    }
    test.calculate();

例二:

function add1(val){
        return "$"+val;
    }
    function add2(val){
        return val+".00";
    }
    function decorator(){
        this.dep=[]
    }
    decorator.prototype.addDep=function(fn){
        // console.log(this.dep);
        this.dep.push(fn);
    }
    decorator.prototype.outDerivedIn=function(val){
        let maxNumber=this.dep.length-1;
        let dep=this.dep
        function getDepFn(val,number){
            if(number>maxNumber){
                return val
            }
        
            val=dep[number](val);
            return getDepFn(val,number+1);
        }
        return getDepFn(val,0)
    }
    let inst=new decorator();
    inst.addDep(add1);
    inst.addDep(add2);
    console.log(inst.outDerivedIn(6));

相关文章

  • js装饰者模式

    定义:不改变原类型的条件下,丰富原类型的操作。类型一般是类。例一:经典的aop 例二:

  • js代码题

    js对象的深度克隆 js数组去重 js常用设计模式的实现思路,单例,工厂,代理,装饰,观察者模式等

  • 如何利用装饰者模式在不改变原有对象的基础上扩展功能

    目录 什么是装饰者模式 普通示例 装饰者模式示例 类图关系 装饰者模式使用场景 装饰者模式优点 装饰者模式缺点 什...

  • js中装饰者模式

    在现有功能上进行装饰 在不改变原对象的基础上,通过对其进行包装拓展,是原有对象可以满足用户更复杂的需求```var...

  • 装饰者模式

    装饰者模式 装饰者模式和适配器模式对比 装饰者模式 是一种特别的适配器模式 装饰者与被装饰者都要实现同一个接口,主...

  • java IO 的知识总结

    装饰者模式 因为java的IO是基于装饰者模式设计的,所以要了解掌握IO 必须要先清楚什么事装饰者模式(装饰者模式...

  • JS设计模式之装饰者模式

    定义: 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。 应...

  • 设计模式-装饰者模式

    装饰者模式概念: 装饰者模式又名包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关...

  • java - 装饰者模式

    装饰者模式 装饰者模式:动态将责任添加到对象上。如果需要扩展功能,装饰者提供了比继承更有弹性的解决方案。装饰者模式...

  • 设计模式之装饰者模式(Decorator Pattern)

    What: 装饰者模式又名包装(Wrapper)模式。装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提...

网友评论

      本文标题:js装饰者模式

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