JQuery関数をオーバーライドします(ロギングデコレータ)

AZawalar

jQuery関数の周りにロギングデコレータを作成したいのですが、(初期化時に)一度だけ呼び出されます。それを修正する方法は?コードを見てください。

function makeLogging(f) {

  function wrapper(...rest) {
      console.log(f.name);
      console.log(rest);
      return f.apply(this, rest);
    }

  return wrapper;
}

const task = $('.task');

task.on = makeLogging(task.on);

task.on('click', () => console.log('hi'));

クリックイベントは、呼び出された関数に関するメッセージを表示しません。

AZawalar

回答のコード例

function makeLogging(f) {

  function auxiliaryWrapper(x, rest) {
    return () => {
      console.log(f.name);
      console.log(rest);
      x();
    }
  }

  function mainWrapper(...rest) {
      const restWithWrap = rest.map(arg => {
        if (typeof arg === 'function') {
          return auxiliaryWrapper(arg,rest);
        }
        return arg;
      });
      console.log(restWithWrap);
      return f.apply(this, restWithWrap);
  }

  return mainWrapper;
}

const task = $('.task');

task.on = makeLogging(task.on);

task.on('click', () => console.log('hi'));

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

デコレータから関数のサブ関数をオーバーライドしますか?

分類Dev

Visual Studioは、.NETFrameworkコードのデバッグ中にコンストラクターと関数をステップオーバーします

分類Dev

jQuery検証プラグインの関数focusInvalidをオーバーライドします

分類Dev

C ++:キーワード演算子を使用してメンバーのコンストラクター関数をオーバーロードします

分類Dev

子コントローラーの親コントローラーのインスタンス変数をオーバーライドします

分類Dev

$ .ajaxでサーバーにグローバルに送信する前に、Jqueryがデータオブジェクトをオーバーライドします

分類Dev

ディレクティブのリンク関数をオーバーライドします

分類Dev

テンプレート(指定なし)をstd :: thread()に渡すと、エラーが発生します:<未解決のオーバーロードされた関数タイプ>マッチングエラー

分類Dev

nullptrパラメーターをテンプレートコードのポインターオーバーロードに委任します

分類Dev

Silverstripe 3は、TreeDropDownFieldのデコレータを作成して、ツリー関数をオーバーロードできるようにします。

分類Dev

Silverstripe 3は、TreeDropDownFieldのデコレータを作成して、ツリー関数をオーバーロードできるようにします。

分類Dev

Pythonデコレータオーバーライド関数の引数

分類Dev

プログレスバー(シークバー)の最後にあるモバイルフレンドリーな「ドットグラブ」をカスタムhtm5オーディオプレーヤーに追加します

分類Dev

AngularJS-オーバーライドディレクティブのコンパイル関数はリンク関数を呼び出しませんか?

分類Dev

ディレクティブでコントローラー関数をオーバーライドするのは良い考えですか?

分類Dev

typescriptクラスデコレータ:コンストラクタをオーバーライドしますが、クラス名は保持しますか?

分類Dev

C ++:特定の(double ...)ポインターパラメーターを持つ関数でvoid *関数を使用して関数をオーバーロードする

分類Dev

ko jqueryオートコンプリートカスタムバインディングは、以前のバインディングをオーバーライドします

分類Dev

JSONPコールバック関数からAngularコントローラーにデータを渡します

分類Dev

オーバーロードされた関数のコンパイラバグ

分類Dev

関数JQueryをオーバーライドしません

分類Dev

致命的なエラー:ローカルホストで正常に機能しているコードイグナイターモデルの非オブジェクトでメンバー関数result()を呼び出す

分類Dev

コンストラクターのオーバーロードで複数の変数を初期化します

分類Dev

Kotlin:汎用インターフェース関数をオーバーライド(および指定)します

分類Dev

django管理者のランディングページをオーバーライドし、変数をテンプレートに渡します

分類Dev

コマンドライン(ギャップレス)または新しいファイルにオーディオファイルをループします

分類Dev

AS3でのロールオーバー時にデータグリッドコンポーネントのインデックスを取得します

分類Dev

外部ファイルのスコープを維持しながら、プロトタイプ関数を拡張/オーバーライドします

分類Dev

オーバーロードされたクラスへのデコレータインターフェイスを正しく実装する方法

Related 関連記事

  1. 1

    デコレータから関数のサブ関数をオーバーライドしますか?

  2. 2

    Visual Studioは、.NETFrameworkコードのデバッグ中にコンストラクターと関数をステップオーバーします

  3. 3

    jQuery検証プラグインの関数focusInvalidをオーバーライドします

  4. 4

    C ++:キーワード演算子を使用してメンバーのコンストラクター関数をオーバーロードします

  5. 5

    子コントローラーの親コントローラーのインスタンス変数をオーバーライドします

  6. 6

    $ .ajaxでサーバーにグローバルに送信する前に、Jqueryがデータオブジェクトをオーバーライドします

  7. 7

    ディレクティブのリンク関数をオーバーライドします

  8. 8

    テンプレート(指定なし)をstd :: thread()に渡すと、エラーが発生します:<未解決のオーバーロードされた関数タイプ>マッチングエラー

  9. 9

    nullptrパラメーターをテンプレートコードのポインターオーバーロードに委任します

  10. 10

    Silverstripe 3は、TreeDropDownFieldのデコレータを作成して、ツリー関数をオーバーロードできるようにします。

  11. 11

    Silverstripe 3は、TreeDropDownFieldのデコレータを作成して、ツリー関数をオーバーロードできるようにします。

  12. 12

    Pythonデコレータオーバーライド関数の引数

  13. 13

    プログレスバー(シークバー)の最後にあるモバイルフレンドリーな「ドットグラブ」をカスタムhtm5オーディオプレーヤーに追加します

  14. 14

    AngularJS-オーバーライドディレクティブのコンパイル関数はリンク関数を呼び出しませんか?

  15. 15

    ディレクティブでコントローラー関数をオーバーライドするのは良い考えですか?

  16. 16

    typescriptクラスデコレータ:コンストラクタをオーバーライドしますが、クラス名は保持しますか?

  17. 17

    C ++:特定の(double ...)ポインターパラメーターを持つ関数でvoid *関数を使用して関数をオーバーロードする

  18. 18

    ko jqueryオートコンプリートカスタムバインディングは、以前のバインディングをオーバーライドします

  19. 19

    JSONPコールバック関数からAngularコントローラーにデータを渡します

  20. 20

    オーバーロードされた関数のコンパイラバグ

  21. 21

    関数JQueryをオーバーライドしません

  22. 22

    致命的なエラー:ローカルホストで正常に機能しているコードイグナイターモデルの非オブジェクトでメンバー関数result()を呼び出す

  23. 23

    コンストラクターのオーバーロードで複数の変数を初期化します

  24. 24

    Kotlin:汎用インターフェース関数をオーバーライド(および指定)します

  25. 25

    django管理者のランディングページをオーバーライドし、変数をテンプレートに渡します

  26. 26

    コマンドライン(ギャップレス)または新しいファイルにオーディオファイルをループします

  27. 27

    AS3でのロールオーバー時にデータグリッドコンポーネントのインデックスを取得します

  28. 28

    外部ファイルのスコープを維持しながら、プロトタイプ関数を拡張/オーバーライドします

  29. 29

    オーバーロードされたクラスへのデコレータインターフェイスを正しく実装する方法

ホットタグ

アーカイブ