如何在 JavaScript 中重写全局函数,但保留对原始函数的引用?

dmp*_*dmp 0 javascript

我想为 window.confirm 实现一个自定义函数,这样我就不必重写大量遗留代码,但如果出现问题或取决于某些任意逻辑,则能够回退到原始函数。

一个快速存根代码,仅作为示例(可能不会这样做,但只是为了一个想法):

window.confirm = function(message, successCallback){
  var ok = site.UI.confirmDialog(message);
  if (ok && typeof(successCallback) == 'function'){
      successCallback();
  } else {
     // maybe call original browser confirm?
     // window.confirmOriginal...?
  }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,如果我覆盖它,如何获取原始函数?它是否存在于原型中的某个地方,或者我是否以错误的方式看待这个问题?

谢谢。

Jos*_*eph 5

这是一个演示

\n\n
var origConfirm = window.confirm; //store for future use\n\n\xe2\x80\x8bwindow.confirm = function(msg){   //override\n     alert(msg);   \n}\n\nwindow.confirm(\'override!\');      //should now be an alert\norigConfirm(\'old confirm\');       //the old confirm\n
Run Code Online (Sandbox Code Playgroud)\n