我在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