1. ホーム
  2. javascript

[解決済み] プログラムによるjavascript関数へのコード追加

2022-08-11 19:48:36

質問

私は、オリジナルのJSコードを変更することなく、既存のJSライブラリをカスタマイズしようとしています。 このコードは、私がアクセスできるいくつかの外部 JS ファイルを読み込みます。私が行いたいのは、全体を 2 番目の JS ファイルにコピー アンド ペーストすることなく、元のファイルに含まれる関数の 1 つを変更することです。

例えば、オフリミットのJSはこのような関数を持っているかもしれません。

var someFunction = function(){
    alert("done");
}

この関数に、何らかの形でJSコードを追加または前置きできるようにしたいと思います。 理由は主に、オリジナルのアンタッチャブルJSでは関数がかなり巨大で、そのJSが更新された場合、私が上書きした関数は古くなってしまうからです。

これが可能であることを完全に確信しているわけではありませんが、確認してみようと思いました。

どのように解決するのですか?

もし someFunction がグローバルに利用可能であれば、その関数をキャッシュし、自分自身の関数を作成し、自分自身にそれを呼び出させることができます。

これがオリジナルなら...

someFunction = function() {
    alert("done");
}

あなたならこうする...

someFunction = (function() {
    var cached_function = someFunction;

    return function() {
        // your code

        var result = cached_function.apply(this, arguments); // use .apply() to call it

        // more of your code

        return result;
    };
})();

これがバイオリンです


を使用していることに注意してください。 .apply を使用してキャッシュされた関数を呼び出していることに注意してください。これによって this を保持し、渡された引数がいくつであろうと、個々の引数として渡すことができます。