基本的に、 my.function() が実行される前に、 my.var 変数を別のもので上書きする必要があります。これを行う方法はありますか?
var oldfunction = my.function;
my.function = function () {
my.var = "whatever you want";
oldfunction.apply(this, arguments);
}
もちろん、これは(そのままで)への呼び出しの直前に変更できないコードによって上書きされるmy
か、上書きされない場合です。my.function
my.function
my.var
たとえば、次のシナリオでは:
///your code goes here
///code you cannot modify below
var my = {};
my.function = something;
my.var = 'cake';
my.function();
あなたが望むことは不可能です(something
同じ方法で再定義することができない限り)。
基本的に、この場合、あなたができる唯一のことは書くことです(と仮定しましょsomething
うfunction () { alert(my.var) }
)
var oldalert = window.alert;
window.alert = function (message) {
oldalert(message === 'cake' ? 'whatever you want' : message);
}
さて、あなたはアイデアを持っています。
my.var = 'cake';
と の間に何らかのコードを挿入するmy.function();
ことは、反対側からは不可能です。大まかに言えば、コードを の前に実行するmy.var = 'cake';
か、後に実行するかという 2 つのオプションから選択できますmy.function();
。後でコードを実行するmy.var = 'cake';
ことは不可能です (本番環境について話している場合、デバッグ目的でmy.function();
変更する必要がある場合は、デバッガーを使用して手動で何でも行うことができます)。my.var