2017-11-23 3 views
0

スタンドアロンのjavascript関数のmeld.js(cujojsから)を使用してAOPを実装しようとすると、Adviceを実行しません。私は以下のコードで試しています。スタンドアロンの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

しかし、私はいくつかのオブジェクト(ミオ)内の関数をラップするとき、それは動作します。 オブジェクト内に関数をラップしたくありません。

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あなたは私を修正してもらえます。

答えて

0

JavaScript関数は神聖であり、決して外部から改ざんすることはできません。メソッドを持つオブジェクトの代わりに関数を直接渡す場合、戻り値は推奨関数です。

はafterReturning https://github.com/cujojs/meld/blob/master/docs/api.md#meldafterreturning

var advisedFunction = meld.afterReturning(functionToAdvise, afterReturningFunction);

+0

グレート@scothisための第二のサンプルコードを見てみましょう。私はドキュメンテーションからこの部分を読んでいなかった人もいます。リンクがありがとうございます。今働いている。 –

関連する問題