2017-09-10 21 views
1

我最近看到密新的JavaScript中的概念主要是通過the article Real Mixins with javascript classes。據我所知,這是一種用抽象類進行多重繼承的方式,它更像是一個構成而不是繼承。我也在閱讀有關繼承的概念構成,如the article Composition Over Inheritance。我知道關於繼承和組合的討論可能會很長,但我已經儘可能避免繼承(至少現在是這樣)。如何爲每種類型的繼承使用Mixins?

所以我想用混入像我一樣能與ES6,在大多數的例子我看到像class A extends MixinB(C)行動三類。如果我只想延長B級呢?我會做一些像class A extends MixinB(Object)?這可能是Mozilla documentation所述的反模式。

注意,我可以做一個直接的繼承像class A extends B,但像他這樣B不是一個混合了,我需要的B一個不同的聲明,如果我想使用它作爲一個mixin。

+0

「繼承並不總是正確的模式」並不意味着「鞋拔子您學習到每一個您以前使用的繼承發生這一新生事物」。 – Ryan

+1

請注意有JavaScript博客作者完全錯誤的構圖。 https://www.reddit.com/r/programming/comments/5dxq6i/composition_over_inheritance/da8bplv/。 Mixins和多重繼承確實是同一件事,但都不是組合。 –

+0

>這可能是Mozilla文檔所述的反模式。 | 的MDN文檔在談論猴子補丁,這確實是壞的,但猴子補丁是不是有什麼'類extends'一樣。 –

回答

0

我認爲,你正在尋找它是改變的Mixin定義功能的解決方案。

而是具有:

MixinB(WhateverClass) 

你可以有:

Mixin(MainClass, otherClass1, otherClass2...) 

如果這是真的:

MixinB(C) = Mixin(B, C) 
-1

我不喜歡這樣的聲音!

所以我想用混入就像我可以

使用混入適當,不是因爲你想使用它們。繼承對於固定的,強大的關係是適當的。當您想要與許多不相關的類共享一小段功能時,Mixin很有用。

+0

請不要以爲我想用Mixins讓我的代碼變得更糟,我所說的是「我想盡可能多地使用Mixins」,而用「can」這個詞我的意思是「so這裏最好使用繼承嗎?使用Mixin會是一種無用的操作嗎?好的,我將使用繼承「。 你的答案更像是一個評論,因爲你沒有回答我所做的問題。 –