100行代码让您学会JavaScript原生的Proxy设计模式

  • 时间:
  • 浏览:0

Java动态代理之InvocationHandler最简单的入门教程

巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验

和Java的Invocation一样优雅地实现了代理设计模式。

使用Proxy代理设计模式的一个多多 多实际例子,请参考我的文章:

Proxy函数是JavaScript提供的原生代理构造器,不可以一个多多 多输入参数:

打印输出:

hireEmployee(jerryProxy, "JavaScript");

下面的代码创建了一个多多 多叫石Jerry的Employee对象,本来用函数hireEmployee雇用该Employee进行JavaScript开发:

他们在回忆我前一天介绍Java InvocationHandler实现动态代理的文章:

var jerryProxy = new Proxy(jerry, proxyLogic );

Java动态代理之InvocationHandler最简单的入门教程

Jerry is developing with: JavaScript

你这名proxyLogic生成后,缘何把它同他们原始的不可以被代理的代码关联起来呢?

第一个多多 多输入参数是他们的Employee实例,即不可以被代码的对象实例,第十个 输入参数是他们开发好的代理逻辑。返回的即是装配好的代理对象,该代理对象的work法律方式实现在第十个 输入参数里。



面向对象设计里的设计模式之Proxy(代理)模式,相信所以他们本来不熟悉了。比如我前一天写过代理模式在Java中实现的两篇文章:

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"本来扫描下面二维码:

只不可以1行代码:

现在他们再次调用hireEmployee,传入Proxy构造器返回的代理对象:

重点看第二行的get法律方式。一个多多 多输入参数,target和name。Target代表当前执行法律方式的实例,即法律方式调用者。Name代表具体的法律方式名称。第4行他们把原始法律方式取出来,存贴到 变量oriFun里。第五行返回一个多多 多新的JavaScript函数,该函数体的实现逻辑为首先在第六行调用原始法律方式,本来在第七行执行额外的逻辑。

是都有思路完整版一样?都有在代理逻辑里调用原始法律方式,本来再执行额外的代码。

Java代理设计模式(Proxy)的你这名具体实现:静态代理和动态代理

觉得和Java一样,JavaScript从语言层面来讲,也提供了对代理你这名设计模式的原生支持。他们用一个多多 多不可以80行代码的例子来看看吧。

打印输出,代理逻辑生效了:

他们为work法律方式创建一个多多 多代理逻辑:

现在Jerry在他的业余时间里想学习某些某些的编程语言,本来愿意影响买车人的本职工作。用技术语言来讲,本来希望Employee原型法律方式work执行时,打印一行额外的信息,本来不允许修改Employee函数和Employee.prototype.work你这名。这时Proxy你这名代理模式就派上用场了。