私はデータベースから取り出した記述的なデータに基づいてクラスを動的に構築しています。例えば、データがこのよう読み込む場合:手動でextend/superを実装する
ClassName = ExampleParent
Method1.name = "greet"
Method1.code = "console.log(\"Parent hello\");"
とこのようにそれを構築するだけで正常に動作:
classList[ClassName] = function(){}
classList[ClassName].prototype[Method1.name] = Function(Method1.code);
var Bob = new classList["ExampleParent"]();
Bob.greet();
しかし、私は、動的に継承を作成する方法について困惑:
ClassName = ExampleChild
ClassExtends = ExampleParent
Method1.name = "greet"
Method1.code = "super.greet(); console.log(\"Child hello\");"
私はどのように使用できるかわかりませんExampleChild.prototypeはExampleParentとExampleChildのカスタムメソッドの両方を指していますが、試してみてもsuperは不明でした。私は空想的なもの(プライベート、静的など)をサポートする必要はありません... このとスーパーが必要です。ヒント?
あなたはあなたのJavaScriptコードは、現在生成されて表示されことができますか?また、 'super'はES6と' class ClassName extends Object'構文の中で宣言された関数の中でのみ利用可能です。 –
お詫び申し上げます。私は今、第1の例のJavaScriptコードを参照しています。 –
@HeinrichHenning:奇妙なことに、オブジェクト初期化子でも 'super'を使うことができます。 [例、ちょうど楽しみのため](https://jsfiddle.net/cmw3L31v/) –