opi*_*ike 2 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;
Run Code Online (Sandbox Code Playgroud)
然后我失去了原始的上下文并抛出错误。如果我使用 apply(),我可以提供一个新的上下文,但我似乎无法保留原始上下文。
基于此 SO 线程: 是否可以在不更改上下文的情况下调用 function.apply? 似乎没有办法实现我想要做的事情,我希望有人可以证实这一点,或者如果我错了,可以纠正我。
保存旧函数然后覆盖它怎么样:
var old = httpProxy.HttpProxy.prototype.proxyRequest;
httpProxy.HttpProxy.prototype.proxyRequest = function () {
old.apply(this, arguments);
//do more stuff
}
Run Code Online (Sandbox Code Playgroud)