javascript - 覆盖 javascript 函数,同时保留原始上下文

标签 javascript closures

我只是想确认我没有遗漏有关管理上下文和重写方法的内容。我在 node.js 应用程序中使用 http-proxy 模块,并且需要重写函数 HttpProxy.prototype.proxyRequest。我想在不直接修改原始模块代码的情况下做到这一点,但一直无法找到一种方法来做到这一点。

如果我这样做:

var httpProxy = require('http-proxy'),
httpProxyOverride = require('./http-proxy-override.js');

httpProxy.HttpProxy.prototype.proxyRequest = httpProxyOverride.proxyRequestOverride;

然后我失去了原始上下文并抛出错误。如果我使用 apply(),我可以提供一个新的上下文,但我似乎无法保留原始上下文。

基于此 SO 线程: Is it possible to call function.apply without changing the context? 似乎没有办法实现我想要做的事情,我希望有人可以证实这一点,或者如果我错了,可以纠正我。

最佳答案

保存旧函数然后覆盖它怎么样:

var old = httpProxy.HttpProxy.prototype.proxyRequest;
httpProxy.HttpProxy.prototype.proxyRequest = function () {
  old.apply(this, arguments);
  //do more stuff
}

取自Javascript: Extend a Function

关于javascript - 覆盖 javascript 函数,同时保留原始上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16890288/

相关文章:

javascript - 理解闭包和作用域

ios - 快速关闭 : cannot invoke a function with its argument list

swift - 如何缩短关闭时间?

javascript - 在闭包内声明的类与没有闭包的标准类

javascript - npm 删除 package.json 中不再存在的所有包

javascript - CSS - 选择器以最大顺序定位元素?

javascript - 在 gwt 项目中使用 google plus api 时,@me 被匿名错误调用

javascript - 仅在具有布局属性的元素内应用于自定义 polymer 元素的样式

javascript - react 上下文奇怪的数据类型错误

static - 不能借用不可变的 'Box' 内容作为可变的