0

次のコード設計の問題に直面しています。

サイトで多数の ajax アクションを追跡する必要があり、追跡するreachGoal(TARGET_NAME)すべての関数に挿入する必要がある分析関数があります。

function handler_func() {
   reachGoal(TARGET_NAME);
   // Other code
   ... 
}

$(document).ready(function() {
    $('#target_id').click(handler_func);
});

私が望むのは、すべてのターゲットを次のように 1 か所から管理できるようにすることです。

handler_func.before(function() {
    reachGoal(TARGET_NAME);
}

これを達成するためのパターンやテクニックはありますか?

4

1 に答える 1

2

はい、デコレータ関数を作成できます。

var goalReacher = function (targetName, func) { 
    return function () {
        reachGoal(targetName);
        func.apply(this, arguments);
    };
};

var myCoolFunction = goalReacher("myTarget", function () {
    // your code here
});
于 2011-07-05T18:26:42.573 に答える