Javascript は初めてですが、C# と同様のセマンティクスを持つプログラミング言語に取り組んでおり、JS トランスコンパイラを追加したいと考えています。Javascript で OOP を実現するさまざまな方法を検討してきましたが、それが今後うまくいくかどうかは完全にはわかりません。
例から始めましょう。私の言語での非常に単純なコードは次のとおりです。
// test.fd
// this code will be put in package 'test'
class Foo
{
float bar;
- test
{
int x = 3;
}
}
これは次のように出力されます。
var test = {
function Foo(){
this.bar = 0.0;
};
foo.prototype.test = function(){
var x = 3;
};
}
今、いくつか質問があります。現在、クラスをコンパイルすると、js 関数 'Foo()' が作成されます。これは実際にはコンストラクターとして動作しています。ユーザーがデフォルトのコンストラクターを作成しない場合は、デフォルトでこれを作成する必要があると考えています。その場合、それが使用されます。しかし、同じクラスに複数のコンストラクターが必要な場合はどうすればよいでしょうか? それらは異なる名前を持つ必要がありますか? また、コンストラクターごとにすべてのメソッドとプロパティを再作成する必要がありますか?
私の次の質問は、JS で継承を実現する最良の方法は何ですか? 私の言語は、すべてのメソッドが仮想であることを前提としているため、ポリモーフィズムが容易になるはずです。
皆さんありがとう、