重写window对象的方法不是一件新奇的事,比如我们可能需要改变默认alert的行为,如何安全的重写呢?

小菜看到某知名IT网站是这样的写法:

window.alert = function(){};

或者

alert = function(){};

实际上,这种写法有些欠妥。这相当于在window对象上添加了一个alert属性,它的优先级比系统内置的alert高,所以可以达到重写的效果,但这很容易突破,执行以下语句,就会还原alert。

delete window.alert;

因为通过这种方式重写的alert,只不过是window对象的一个属性而已,可以通过delete操作符删除。

如何才能永久重写,不可逆转呢?

只需定义一个全局变量即可!全局变量虽然也会注册为window对象的一个属性,但它不可删除,它是事实上绝对存在的。代码如下:

var alert = function(){};

这样重写的方法,是绝对不会被还原的,安全可靠!

如何真正重写window对象的方法的更多相关文章

  1. JavaScript DOM编程基础精华01(DOM入门,DOM模型和获取页面元素,事件,window对象的方法)

    DOM入门 DOM就是Html页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性.方法就可以对网页中的文本框.层等元素进行编程控制.比如通过操作文本框的DOM对象,就可以 ...

  2. 《JavaScript权威指南》学习笔记 第五天 window对象的方法。

    前天和昨天大致浏览了犀牛书的函数.类与模块.正则表达式.JavaScript扩展.以及服务端的js.这些方面对于我目前的水平来说比较难,一些最基本的概念都不能领会.不过最复杂的知识占用平时使用的20% ...

  3. 在JavaScript中重写jQuery对象的方法

    jQuery是一个很好的类库,它给我们解决了很多的客户端编程,任何东西都不是万能的,当它不能满足我们的需求时我们需要对它进行重写,同时也不要影响其原有的功能或者修改其原有的功能:我现在的web应用程序 ...

  4. window对象的方法和属性汇总

    window对象有以下方法: open close alert confirm prompt setTimeout clearTimeout setInterval clearInterval mov ...

  5. window对象open方法详解

    window.open详解 window.open("sUrl","sName","sFeature","bReplace&quo ...

  6. JQuery获取iframe中window对象的方法-contentWindow

    document.getElementsByTagName('iframe')[0].contentWindow 获取到的就是iframe中的window对象.

  7. window对象的方法

    window.alert('大家好!');//弹出警告对话框 window.confirm('确定要删除吗?');//确定.取消对话框,返回true或false; window.navigate(ur ...

  8. JavaScript BOM-11-BOM的核心-window对象; window对象的控制,弹出窗口方法; 超时调用; 间歇调用; location对象常用属性; 位置操作--location.reaplace,location.reload(); BOM中的history对象; Screen对象及其常用属性; Navigator对象;

    JavaScript BOM 学习目标 1.掌握什么是BOM 2.掌握BOM的核心-window对象 3.掌握window对象的控制.弹出窗口方法 什么是bom BOM(browser object ...

  9. JS window对象详解

    window 是客户端浏览器对象模型的基类,window 对象是客户端 JavaScript 的全局对象.一个 window 对象实际上就是一个独立的窗口,对于框架页面来说,浏览器窗口每个框架都包含一 ...

随机推荐

  1. 一段防盗连的PHP代码

    $ADMIN[defaulturl] = http://www.163.com/404.htm;  //盗链返回的地址  $okaysites = array("http://www.163 ...

  2. nginx环境下配置nagiosQL-关于nagiosql配置文件

    接上文:nginx环境下配置nagios-关于nginx.conf nagiosql文件应该处于conf/domain/目录下 nagiosql配置如下: ;                  gzi ...

  3. git常用操作

    批量删除以bran开头的本地分支 git branch |grep 'bran'|xargs git branch -d

  4. 先进先出集合queue

    先进先出集合queue Enqueue添加到集合最后 Dequeue移除集合第一个对象并返回

  5. android及IOS的测试中容易疏漏或者测漏的点——持续更新

    1.控件的生命周期——控件消隐之后,会不会依然可点,导致出现进一步的响应?这个之前没想过,之后需要加入到测试点中 2.在登录界面同时出现弹窗: 如:特殊情况下,同时出现弹窗,又刚好退出登录,因此登录界 ...

  6. ceph初步快速部署

    一.基本情况:物理设备:4台惠普dl360,4个千兆网卡 4个1T盘操作系统统一为:CentOS 7.2.1511ceph版本:10.2.3ceph-deploy版本:1.5.36网络情况:192.1 ...

  7. android开发环境搭建(64位)

    一.相关下载 1.下载JDK.  网址:http://java.sun.com/javase/downloads/index.jsp,选择jdk-7u21-windows-x64.exe. 2.下载E ...

  8. linux卸载openJDK并安装sun jdk

    linux下卸载openJDK并安装java 1.查找现在有的jdk rpm -qa | grep java 2.删除jdk rpm -e --nodeps java----- 3.安装jdk 下载j ...

  9. sql联合查询多个表

    SELECT hp_patient.name, hp_ptorders.DrugName, hp_ptorders.Dosage,hp_ptorders.DosageUnit FROM hp_pati ...

  10. Eclipse CDT、MingGW 遇到的一些错误汇总

    1.写代码时报错 "Member declaration not found" 如图: 在StackOverflow上找到的答案: 出问题的地方是 CDT的新功能 代码检查 Ope ...