を削除せずに機能をオーバーライドは、静的プロパティ
a.static = 'foo';
しかし、私はとの関数をオーバーライドしたいと言いますこのような別の関数:
var old = a;
a = function() {
console.log('new');
old.call(this);
};
a.static // undefined
私はa
に新しい機能が割り当てられているので、静的なプロパティが失われます。ループせずに静的なプロパティを保持し、手動でそれらをコピーするためのきちんとした方法はありますか?
更新:
ここで現実の世界のシナリオだ。だから私は、「拡張」をしたい場合は
$.fn.modal = function() {
// some code
};
$.fn.modal.defaults = { // some object };
:ブートストラップjQueryのプラグインでは、著者はこのようなプロパティ関数にデフォルト値を割り当て、私は通常どうなるのプロトタイプ:
var old = $.fn.modal;
$.fn.modal = function() {
// do my thing
old.apply(this, arguments);
}
しかし、それは
になるだろうデフォルトを失うため、機能が無効になります。私は静的なプロパティを失うことなく、の機能だけをに変更するためにjavascriptに卑劣な方法があるかどうか疑問に思っていました。
このようなアプローチの使用方法を聞かせてもよろしいですか?それは本当に乱雑に見えます。 – Christoph
私は、ブートストラップのjQueryプラグインで、著者がプロトタイプに添付されたオブジェクトとして静的なデフォルトを割り当てるため、尋ねています。だから、もし私がそれを拡張したいのであれば、私はデフォルトのもの(およびおそらく他のプロパティ)を失います。また、関数を変更する方法があるのか不思議ですので、静的なプロパティではありません。 – David