2013-03-18 73 views
3

我观察到,通过使用Javascript中的“prototype”属性(并间接设置原型链),可以实现JavaScript中的多级继承。但有没有可能通过某种方式在Javascript中实现多重继承?任何简单的例子都会很棒。在Javascript中实现多继承

回答

5

为了实现简单的继承,你通常会做

MyClass.prototype = new MySuperClass(); 

但你也可以复制其他“类”的内容:

MyClass.prototype = new MySuperClass(); 
var myOtherSuperClass = new MyOtherSuperClass(); 
for (var key in myOtherSuperClass) { 
    MyClass.prototype[key] = myOtherSuperClass[key]; 
} 

当然,你可以使用一个工具像jQuery.extend做,或者滚动你自己的。

限制是instanceof不会检测到MyOtherSuperClass

1

要明确,JS没有多重继承。

每个对象只能有一个原型。

但是,由于EVERYTHING是可变的,它可以支持“mixins”,这就是扩展方法的全部内容。他们只是将一个对象的按键复制到另一个对象。虽然这不是实际的继承。通常,在该方案中,结果对象将只有一个原型,它是Object。

1

尽管只有很少的库可以实现JavaScript中的多重继承,但它是可能的。我知道的唯一例子是Ring.js

当然,它不仅仅依靠原型,所以instanceof不起作用。但图书馆提供了一个替代品,所以这不是什么大问题。