Javascript 如何恢复被覆盖的本机方法?
我正在做一个项目,注意到一位核心开发人员在他的JS中过度编写了Javascript 如何恢复被覆盖的本机方法?,javascript,function,Javascript,Function,我正在做一个项目,注意到一位核心开发人员在他的JS中过度编写了alert()方法 是否可以在不询问/更改其代码的情况下恢复 他做了一些像 function alert() { // his code } 如果可以在导致此问题的代码之前插入代码,则可以“修复”它: 例如 当然,这意味着其他代码现在可能无法正常工作或导致不必要的警报框 这还取决于其他代码覆盖警报的准确程度。如果一个名为alert的函数被错误地提升到全局作用域中,这只是一个草率的代码,那么您可以通过将整个代码块包装在一个匿名函
alert()
方法
是否可以在不询问/更改其代码的情况下恢复
他做了一些像
function alert() {
// his code
}
如果可以在导致此问题的代码之前插入代码,则可以“修复”它: 例如 当然,这意味着其他代码现在可能无法正常工作或导致不必要的警报框 这还取决于其他代码覆盖警报的准确程度。如果一个名为
alert
的函数被错误地提升到全局作用域中,这只是一个草率的代码,那么您可以通过将整个代码块包装在一个匿名函数中来修复它:
(function() {
// scope to this block
var alert;
// bad code here
alert = function() {};
})();
// alert doesn't pollute global scope:
alert("HI");
不要做一个中间的
他是如何覆盖它的?函数alert(){//他自己的代码在这里}你在使用修订控制吗?我想我不明白这个问题。你是在问如何取消保存一个文件吗?你的代码必须紧跟在代码之后?用报纸攻击开发人员是最好的选择。不破坏依赖于重新定义的当前代码的正确解决方案是先保存旧的alert()
,然后用另一个名称(如\u alert()
)将其替换。当然,您也可以显式使用\u alert()
而不是还原它。实际上,包装alert=function(){};匿名函数中的code>仍将其置于全局作用域中。是的,错过了修复作用域的var
。固定的
(function() {
// scope to this block
var alert;
// bad code here
alert = function() {};
})();
// alert doesn't pollute global scope:
alert("HI");
var f = document.createElement("iframe");
f.width = 0;
f.height = 0;
f.src = "about:blank";
f.onload = function() {
f.contentWindow.alert("Hi!");
document.body.removeChild(f);
};
document.body.appendChild(f);