如何在 JavaScript 中覆盖全局函数,但保留对原始函数的引用
How to override global functions in JavaScript, but keep a reference to the original function?
>我想为 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
相关文章:
- 将参数传递给函数,同时保留事件处理程序
- 自调用函数不保留私有值
- 保留 JQuery Vars 用于另一个函数(全局变量?)
- 我可以通过使用函数绑定来保留默认值吗?如果没有,为什么
- JavaScript 在内部函数中保留一个 var
- GAS:在处理程序函数中使用变量时,如何更改全局变量值并保留其更改后的值
- DynamoDB中的扫描函数,保留关键字为FilterExpression NodeJS
- hidden()是javascript的保留函数吗
- 当使用“”创建时保留函数属性;绑定”;
- 命名函数“;删除“..删除是一个保留字
- 为什么参数不在函数之外保留其值
- Javascript 变量函数不保留值
- JavaScript 作用域:在函数后保留全局变量值
- JavaScript 不会保留新的标签内容来执行函数
- 为什么 javascript 会保留在外部函数中发生的局部变量重新分配,而不必捕获返回值
- 闭包编译器 - 保留未使用的函数,不要重命名未定义的函数
- 保留参数的函数
- 是否可以在JS中获取保留字(变量,函数,对象名称)的列表
- 生成的函数保留对变量的引用,而不是值替换
- 函数保留旧的变量值