Javascript 如何恢复被覆盖的本机方法?

Javascript 如何恢复被覆盖的本机方法?,javascript,function,Javascript,Function,我正在做一个项目,注意到一位核心开发人员在他的JS中过度编写了alert()方法 是否可以在不询问/更改其代码的情况下恢复 他做了一些像 function alert() { // his code } 如果可以在导致此问题的代码之前插入代码,则可以“修复”它: 例如 当然,这意味着其他代码现在可能无法正常工作或导致不必要的警报框 这还取决于其他代码覆盖警报的准确程度。如果一个名为alert的函数被错误地提升到全局作用域中,这只是一个草率的代码,那么您可以通过将整个代码块包装在一个匿名函

我正在做一个项目,注意到一位核心开发人员在他的JS中过度编写了
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(){};仍将其置于全局作用域中。是的,错过了修复作用域的
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);