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