当我试图为独立的javascript函数使用meld.js (来自cujojs)实现AOP时,它并不是在执行通知。我一直在尝试下面的代码。
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
你能纠正我哪里做错了吗?
发布于 2017-11-24 17:55:02
在JavaScript中,函数是神圣的,不能被外部篡改。在直接传递函数时,返回的值不是带有方法的对象,而是建议的函数。
看看afterReturning https://github.com/cujojs/meld/blob/master/docs/api.md#meldafterreturning的第二个代码示例
var advisedFunction = meld.afterReturning(functionToAdvise, afterReturningFunction);
https://stackoverflow.com/questions/47456406
复制相似问题