3

私は、Javascript で「prototype」プロパティを使用する (および間接的にプロトタイプ チェーンを設定する) ことで、JavaScript で複数レベルの継承を実装できることを確認しました。しかし、何らかの方法でJavascriptに多重継承を実装することは可能ですか? 簡単な例はどれも素晴らしいでしょう。

4

3 に答える 3

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です。

于 2013-03-18T09:31:16.190 に答える
1

明確にするために、JS には多重継承がありません。

各オブジェクトは、プロトタイプを 1 つだけ持つことができます。

ただし、すべてが可変であるため、拡張メソッドのすべてである「ミックスイン」をサポートできます。あるオブジェクトのキーを別のオブジェクトにコピーするだけです。ただし、それは実際には継承ではありません。通常、そのスキームでは、結果のオブジェクトには、オブジェクトである 1 つのprotoのみが含まれます。

于 2013-04-20T21:23:48.417 に答える
1

JavaScript で多重継承を実装することは可能ですが、これを行うライブラリはほとんどありません。私が知っている唯一の例はRing.jsです。

もちろん、プロトタイプだけに頼っているわけではないので、うまくいきinstanceofません。しかし、ライブラリはその代わりを提供するので、大したことではありません。

于 2013-07-13T12:54:18.760 に答える