私はここで賢くなろうとしています。他のクラスのインスタンスをラップし、1 つまたは 2 つのメソッドをオーバーライドするが、他のすべてのメソッド呼び出しをデリゲート オブジェクトに直接渡すクラスを作成するとします。
function Wrapper(delegate) {
this._delegate = delegate;
}
Wrapper.prototype.example = function() {
console.log('Doing something in wrapper');
this._delegate.example();
};
デリゲートに他の 100 のメソッド (誇張、許可) がある場合、ラッパーでそれぞれのメソッドを定義することはできませんが、JavaScript でこれを行うエレガントな方法はありますか?
私は、実際のインスタンスでのメソッドのスウィズリング/プロキシを検討しました。
Wrapper.wrap = function(delegate) {
var example = delegate.example;
delegate.example = function() {
example.call(this, arguments);
console.log('Forwarded an overridden method call!');
};
return delegate;
};
しかし、回避できるのであれば、インスタンスを変更したくありません。