一道js代码填空题的解 window.alert = function(){};____;alert(1);

JS/DHTML/CSS 专栏收录该内容
114 篇文章 0 订阅

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。



代码写的多写的复杂,并不代表水平高。

真正的代码高手,总是把代码写的更少、更简单。


  • 0
    点赞
  • 2
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值