1

コンテキストの管理とメソッドのオーバーライドに関して、何かが欠けていないことを確認したいだけです。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 スレッドに基づいて: コンテキストを変更せずに function.apply を呼び出すことは可能ですか? 私がやろうとしていることを達成する方法があるようには見えません.誰かがこれを確認するか、私が間違っている場合は修正してくれることを願っています.

4

1 に答える 1

4

古い関数を保存してから、次のように上書きするのはどうですか:

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

Javascriptから取得: 関数の拡張

于 2013-06-03T05:24:07.460 に答える