2013-03-18 72 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不起作用。但圖書館提供了一個替代品,所以這不是什麼大問題。