このパターンをJSの継承に使用しました
MyApp.utils = {
extend: function (subClass, baseClass, subClassMethods) {
function inheritance() { }
inheritance.prototype = baseClass.prototype;
subClass.prototype = new inheritance();
subClass.prototype.constructor = subClass;
subClass.baseConstructor = baseClass;
subClass.superClass = baseClass.prototype;
if (subClassMethods == null) return;
for (var index in subClassMethods) {
subClass.prototype[index] = subClassMethods[index];
}
}
};
あなたはそれを次のように使用します
MyApp.utils.extend(SubClass, BaseClass, {
subMethodOne: function() {
}
});
これはうまく機能し、コードは非常に単純ですが、コンストラクター呼び出しがベースクラスではなくサブクラスになり、スタック オーバーフローが発生するため、多重継承では機能しません。
多重継承に最適なパターンは何ですか? プロトタイプをサポートし、各クラスで個別のコンストラクター ロジックをサポートする必要があります。
JSFiddle: http://jsfiddle.net/HcPhL/1/ FF がクラッシュするので注意してください :D