如何在 JavaScript 中覆盖全局函数,但保留对原始函数的引用

How to override global functions in JavaScript, but keep a reference to the original function?

本文关键字:函数 保留 原始 引用 JavaScript 覆盖 全局      更新时间:2023-09-26

>我想为 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...?
  }
}

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

谢谢。

这是一个演示

var origConfirm = window.confirm; //store for future use
​window.confirm = function(msg){   //override
     alert(msg);   
}
window.confirm('override!');      //should now be an alert
origConfirm('old confirm');       //the old confirm