Maison > Questions et réponses > le corps du texte
javascript可以覆盖默认类型,比如 var Docuemnt = 3; 如果是undefined 我们可以通过 void(0) 来找回。 但是其他一些类型怎么找回,比如Text,Document?
ringa_lee2017-04-10 12:47:51
可以考虑使用 delete 来恢复。例如
alert = 111;
delete alert;
alert('test');
甚至可以考虑创建一个 iframe,然后用 iframe 下的对应类型覆盖掉自身。
---update---
多扯两句,为啥 delete 可以恢复。
因为一些方法都是宿主环境的原型上面的方法,例如A.prototype.alert
。
通常我们使用的时候,A 下没有 alert 方法,所以就去查找 A 的原型,然后发现原型有 alert 方法,然后就成功执行了。
我们覆盖那些默认方法的时候,是相当于给 A.alert
赋值。根据变量查找的顺序,先找到 A.alert
了,所以就执行了。所以,我们只要 delete 掉 A.alert
,执行的时候,就会找到原型上的 alert
,也就恢复了。