0

私はプロジェクトに取り組んでおり、コア開発者の 1 人がalert()JS のメソッドを上書きしていることに気付きました。

彼のコードを尋ねたり変更したりせずにそれを回復することは可能ですか?

彼は次のようなことをしました..

function alert() {
   // his code
}
4

2 に答える 2

2

この問題を引き起こしているコードの前にコードを挿入できる場合は、それを「修正」できます。

例えば

window._alert = window.alert;
// bad code ..
window.alert = function() {};
// restore correct function
window.alert = window._alert;

もちろん、これは、他のコードが正しく機能しないか、不要なアラート ボックスが表示される可能性があることを意味します。

また、他のコードがどの程度正確に上書きしているかにも依存しますalert。呼び出された関数alertが誤ってグローバル スコープに引き上げられた単なるずさんなコードである場合は、コードブロック全体を無名関数でラップすることで修正できる可能性があります。

(function() {
    // scope to this block
    var alert;

    // bad code here
    alert = function() {};
})();
// alert doesn't pollute global scope:
alert("HI");
于 2013-09-26T00:31:27.893 に答える