我在JS使用這個模式來繼承的Javascript多重繼承模式
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
如果你打開一個現有的繼承模擬方法具有佔地面積小,我都用,效果很好這樣的:http://ejohn.org/blog/simple- JavaScript的繼承/ – David
謝謝,在小提琴重覆方法和調用基礎方法嘗試它,這是可能的嗎? http://jsfiddle.net/xFPy4/ – Anders
它可以(將)重寫原型。 'this._super()'調用同名的超類方法,它不是超本身的引用。 HTTP://的jsfiddle。net/xFPy4/1/ – David