发现问题的经过:在浏览这篇文章的时候,因为要边测试边记录嘛。自然就在控制台测试代码。然后代码中的alert(...)都被转换成了console.log(...)看了他的代码。是这样把alert()转化的:window.alert = function(n) { try { console.log("alert: " + n) } catch (t) {} return !0}因为之前没见过,所以又学习到了。但是,我之前看过萧井陌萧大的代码,他把console.log()改写成了var log = console.log.bind(console),(算是一种封装?)就可以用log()直接调用,比较方便。问题如下:所以按照这个思路,我想是不是可以把window.alert也这样处理一下就可以达到文章中的效果(就是没有检错)?我的源码如下:window.alert = console.log.bind(console)检验之后确实能实现不弹窗,然后在控制台输出的效果。但是把页面的这个alert效果改了,总得要有办法还原。查了一下解绑用unbind()。但是学艺不精。直接把上面那行代码改成:window.alert = console.log.unbind(console)会报console.log.unbind is not a function 的错。但是不知道怎么处理才能让他解绑,还是说我这样的方法无法把alert的效果还原了?这里先谢谢各位辣!
1 回答
不负相思意
TA贡献1777条经验 获得超10个赞
先备份 alert 的实现:
window.$alert = alert;
window.alert = console.log.bind(console);
alert('fff'); //控制台输出 fff
$alert('fff'); //弹窗显示 fff
关于 unbind,我搜索了一下都是 jQuery 的解绑事件所用,我也没听说过 js 有 unbind 这种写法,所以这部分就帮不到你了,抱歉。
添加回答
举报
0/150
提交
取消