Javascriptのクラス自体の概念の欠如にいつも少し腹を立てていましたが、継承をすると、一般的に少し緊張します。 このトピックに関する非常に多くの資料を読み、コメントで与えられたajaxoop.jsライブラリーのわずかに切り捨てられたバージョンを含む、
ここからいくつかの「回避策」を試し
た後、適切で馴染みのあるものは見つかりませんでした。
ただし、「馴染みのある」継承の実装を必要とするタスクがあり、その追加の快適な副作用は多重継承の可能性でした。
だから、私はこの問題に対する私の意見の解決策でこのようなかなり簡単なものを提案します:
function ExtClass(supers) {
たとえば、2つの親クラスを作成します。
function Parent1() { ExtClass.call(this);
そして、それぞれが親から継承する2つのクラスの子クラス:
function Child1() { ExtClass.call(this, { Parent1: null }); this.message = function() { return 'Child1::message'; } } function Child2() { ExtClass.call(this, { Parent2: null }); this.message = function() { return 'Child2::message'; } }
さて、子クラスから継承する要約クラス:
function Child12() { ExtClass.call(this, { Child1: null, Child2: null }); this.message = function() {
最後のクラスのオブジェクトを作成し、このオブジェクトのmessage()メソッドが返されることを確認します。
var childTest = new Child12(); alert(childTest.message());
結果は次のとおりです。
Parent1::message
Parent2::message
Child1::message
Child2::message
Child12::message
ご覧のとおり、すべての親メソッドは適切に機能します。 このソリューションが多くの人に役立つことを願っています。