Выполнение AOP с использованием meld.js(cujojs) для автономных функций javascript не работает
Когда я пытаюсь реализовать AOP, используя meld.js (из cujojs) для автономных функций javascript, он НЕ выполняет Advice. Я пытался с приведенным ниже кодом.
var meld = require("meld")
function afterReturn(returnValue){
console.log(returnValue);
}
function test(x,y) {
console.log(x);
console.log(y);
return x+y;
}
var remover = meld.afterReturning(test, afterReturn);
test(5,6);
:
5 И 6
Но когда я обертываю функцию внутри некоторого объекта (myo), она работает. Я не хочу, чтобы обернуть функции внутри любого объекта.
var meld = require("meld")
function x(returnValue) {
console.log(returnValue);
}
var myo = {
test : function(x,y) {
console.log(x);
console.log(y);
return x+y;
}
}
var remover = meld.afterReturning(myo,'test', x);
myo.test(5,6);
:
5, 6 И 11
Не могли бы вы исправить меня, где я делаю неправильно.
1 ответ
В JavaScript функции являются священными и никогда не могут быть изменены внешне. При передаче функции напрямую, вместо объекта с методом, возвращаемое значение является рекомендуемой функцией.
Взгляните на второй пример кода для последующего возвращения https://github.com/cujojs/meld/blob/master/docs/api.md#meldafterreturning
var advisedFunction = meld.afterReturning(functionToAdvise, afterReturningFunction);