私はwindow.confirmのカスタム関数を実装したいので、大量のレガシーコードを書き直す必要はありませんが、何かがうまくいかない場合、または何らかの問題に応じて元の関数にフォールバックすることができます論理。JavaScriptでグローバル関数をオーバーライドする方法はありますが、元の関数への参照は保持していますか?
迅速なスタブコードは、単なる一例(おそらく、このようにそれを行うことはありませんが、ちょうどアイデアのための)ために:
window.confirm = function(message, successCallback){
var ok = site.UI.confirmDialog(message);
if (ok && typeof(successCallback) == 'function'){
successCallback();
} else {
// maybe call original browser confirm?
// window.confirmOriginal...?
}
}
ここで問題は、私は「の場合、元の関数を取得する方法であり、それを上書きしていますか?プロトタイプのどこかに存在するのでしょうか、あるいはこれを間違った方法で見ていますか?
ありがとうございました。
私は***強く***アドバイスは、あなたは '*異なっ*' confirm'(コールバックを行うのではなく、ブロッキング)からの振る舞い何かでconfirm'を上書きしないでしょう。別の名前の関数を作成します。 –
'inheritance'タグを再:これは継承とは関係ありません。私はタグを削除しました。 –
参照が明示的に格納されていなくても、元の関数がどこかに存在するかどうかは本当に興味がありました.JSの仕組みはたくさんありますが、微妙なことはまだ探っています:) – dmp