window.alert绑定console之后是不是无法解绑?

发现问题的经过:

在浏览这篇文章的时候,因为要边测试边记录嘛。自然就在控制台测试代码。然后代码中的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的效果还原了?

这里先谢谢各位辣!


aluckdog
浏览 479回答 1
1回答

不负相思意

先备份 alert 的实现:window.$alert = alert;window.alert = console.log.bind(console);alert('fff'); //控制台输出 fff$alert('fff'); //弹窗显示 fff关于 unbind,我搜索了一下都是 jQuery 的解绑事件所用,我也没听说过 js 有 unbind 这种写法,所以这部分就帮不到你了,抱歉。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript