1本のjsコードは空欄の問題の解windowを埋めます.alert = function(){};____;alert(1);

890 ワード

window.alert = function(){}; //   alert  
//       alert  
alert(1); //        alert   

この話題を記録したのは、微博で誰かが議論したので、私は直接答えを書いたからです.
メソッド1でalertを直接削除します.
window.alert = function(){};
delete alert;
alert(1);
このコードは最も簡単で、効果が最も良いです.
おすすめです.
方法2,プロトタイプチェーンから元のalertメソッドを取り戻す.
alertはwindowの方法なのでwindowを見つけます.constructor.prototype.alert、callまたはapplyを呼び出せばいいです.
window.alert = function(){};
window.alert = function(s){window.constructor.prototype.alert.call(window,s);};
alert(1);
は、実際のalertではなく、後のalertがこの関数であることを再定義して上書きする.
window.constructorは互換性があり、Windowオブジェクトを使用するとIEはサポートされません.
方法3,iframe法.
新しい空白のiframeを作って、このiframeの中のDOMはきれいで、このiframeの中のalertを引用して、警告のダイアログボックスを弾き出すことができます.
この方法を考え出した人は本当にJSが分からないとしか言いようがありません.
コード書きの多書きは複雑で、レベルが高いわけではありません.
本当のコードの達人は、いつもコードをもっと少なく、もっと簡単に書きます.