こんにちは私はjQueryとJavaScriptに比較的慣れていないので、の機能について質問があります$.extend
。extend
「基本クラス」を拡張するクラスのプロトタイプを上書きするために使用しています。ベースParent
と子/拡張クラスA
を呼び出しましょうB
。今、私が使用$.extend(true, A.prototype, {someObject: {extraKey: 'value'}});
すると、のプロトタイプもParent
変更されているように見えますsomeObject
。その結果、複数のオブジェクト/クラスが親から継承すると、非常に奇妙な動作になります。また、これは「深い」拡張が使用されている場合にのみ発生します。
空のオブジェクトをそれぞれのプロトタイプで拡張し、extendの戻り値を新しいプロトタイプとして使用することで、この問題を回避することができました。例えばA.prototype = $.extend(true, {}, A.prototype, {someObject: {extraKey: 'value'}});
問題を示すために、私はこの小さなjsfiddleを作成しました:http://jsfiddle.net/x8UtF/12/
実際の質問:空のオブジェクトやものを回避する方法はありますか?extend(true, X.prototype, {});