我有一个模块如下:
define([...], function(...){
function anothermethod() {...}
function request() {....}
request.anothermethod = anothermethod;
return request;
}
现在我想在请求方法(闭包)的anothermethod
方法之前使用dojo方面。可能吗?如果是这样,我应该在目标参数中添加什么?
aspect.before(target, methodName, advisingFunction);
另一种方法不是直接调用的。首先调用request方法,间接调用anothermethod:
require(['dojo/aspect'], function(aspect){
function anothermethod() {
console.log('another method');
}
function beforeanothermethod() {
console.log('before another method');
}
function request() {
anothermethod();
}
request.anothermethod = anothermethod;
aspect.before(request, 'anothermethod', beforeanothermethod);
request();
})
答案 0 :(得分:1)
您可以使用request
作为目标。
参见:
require(['dojo/aspect'], function(aspect){
function anothermethod() {
console.log('another method');
}
function beforeanothermethod() {
console.log('before another method');
}
function request() {}
request.anothermethod = anothermethod;
aspect.before(request, 'anothermethod', beforeanothermethod)
request.anothermethod();
})
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
答案 1 :(得分:1)
在您的情况下,您已经有一个目标,即request
:
aspect.before(request, 'anothermethod', function() {
// Do something
});
但要回答你原来的问题,不,你不能。你总是需要一个目标。正常功能的目标是该功能所在的本地范围,但无法访问该功能。
因此,最好的解决方案是将其添加到特定对象(request
),就像您一样。