1949啦网--小小 痛苦,是因为能力和欲望不匹配造成的

Mendix---dojo.aspect模块你必须知道的

dojo/aspect 模块的官方地址: https://dojotoolkit.org/reference-guide/1.10/dojo/aspect.html#dojo-aspect

一、dojo/aspect介绍

dojo/aspect提供了面向切面编程的能力。我们可以利用他在已有的函数前,后执行自己的函数,或者阻止执行已有的函数。 dojo/aspect提供了after,before,around三个函数,三个函数的作用将在后续介绍。

1、after(target, methodName, advisingFunction, receiveArguments);函数

参数介绍: 1、target:目标对象; 2、methodName:目标对象的函数; 3、advisingFunction:自定义函数; 4、receiveArguments:advisingFunction函数 是否使用methodName函数的参数。
简单说明: receiveArguments为boolean值,如果为true,则advisingFunction函数的入参为methodName的参数。

此函数作用:在目标函数执行之后执行自定义函数;advisingFunction的返回值将作为调用methodName的返回值,即after具有修改目标函数的能力。

一个例子:

define(["dojo/aspect"], function(aspect){   aspect.after(dojo, "xhr", function(deferred){     // 将会在 dojo.xhr 之后执行   });   // 执行dojo原生的函数   dojo.xhr("GET", {...}); }); 

2、before(target, methodName, advisingFunction)

参数介绍: 1、target:目标对象; 2、methodName:目标对象的函数; 3、advisingFunction:自定义函数  简单说明: 1、advisingFunction函数法接收的参数为methodName函数的参数; 2、advisingFunction方法可以有一个返回值, 该返回值将替换掉调用methodName(或者下一个before)时的参数, 即before有改methodName参数的能力。 3、advisingFunction的返回值需要是一个数组。
此函数的作用: 顾名思义,其主要作用是在目标函数执行之前执行自定义函数, 可以达到修改目标函数参数的作用。

一个例子:

define(["dojo/aspect"], function(aspect){   aspect.before(dojo, "xhr", function(method, args){//此参数为xhr的参数     //在xhr函数执行之前执行     if(method == "PUT"){       // 测试:修改一下入参       args.url += "?x-method=PUT";       // 返回新的参数将作为xhr的入参       return ["POST", args];     }   });   // 在上述函数执行之后执行   dojo.xhr("PUT", {...}); }); 

3、around(target, methodName, advisingFactory);

参数说明: 1、target:目标对象; 2、methodName:目标函数 3、advisingFactory:methodName方法执行前执行的方法  简单说明: 1、advisingFactory接收的参数为目标函数methodName。 2、advisingFactory必须返回一个函数,且函数参数为 目标函数methodName的参数; 3、advisingFactory返回的函数中可以对参数重新处理, 之后选择性的调用或者不调用目标methodName, 如果调用也可以处理methodName的返回值。 4、advisingFactory返回的函数的返回值作为 最开始调用methodName的返回值。
此函数的作用:around即可以修改methodName的参数又可以修改methodName返回的结果,且methodName不一定执行

一个例子:

define(["dojo/aspect"], function(aspect){   aspect.around(dojo, "xhr", function(originalXhr){   //around()在xhr函数执行之前执行,且入参为xhr函数   //必须有一个返回函数,且入参为xhr函数的入参     return function(method, args){       // 可以做一些原始函数调用之前得操作        //选择性调用原始函数xhr       var deferred = originalXhr(method, args);        //自己的业务逻辑.....        //此返回值将会作为xhr函数的返回值       return deferred;     }   });   dojo.xhr("PUT", {...}); }); 

参考:https://blog.csdn.net/lj15875569485/article/details/35573291

https://dojotoolkit.org/reference-guide/1.10/dojo/aspect.html#dojo-aspect

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

作者:xialibing 分类:网络教程 浏览: