JavaScriptの継承とプロトタイプにいくつか問題があります。私が行ったすべての調査では、stackoverflow / googleでクラスのプロトタイプを使用するようになりましたが、それは避けたいポイントです。私は今JavaScriptがそのように考えられていませんが、それは可能だと確信しています。
私には2つのクラスがあります(またはそれ以上かもしれません)。1つはベースであり、それがすべての母になります。基本的な属性とメソッド(基本的なOOなど)をすべて備えている必要があります。私のオブジェクトはジオメトリ用です。
function EnvObject(){
this.position = {x: 0, y: 0};
this.velocity = {x: 0, y: 0};
this.mass = 0; // kg
this.restitution = 0; // Restitution
this.A = 0;
this.Cd = 0; // Drag force
function init(_x, _y, _mass, _restitution)
{
blabla
};
};
function oCircle()
{
function foo(){}
function bar(){}
}
function oSquare()
{
function foo(){}
function bar(){}
}
メインクラスは、正方形や円など、クラスのすべての情報を提供します...プロトタイプで拡張すると、大きな問題と素晴らしいことにつながります。メソッドは十分に共有されます(それはクールです)が、私の属性も共有されるので、 Squareクラスで変更すると、Circleでも属性が変更されます(これは悪いことです)
主な解決策は、属性のインターフェイスを提供せず、Square / Circleクラスにのみ配置することですが、あまりクリーンではありません(つまり、同じ属性を2回以上記述します)。
私の主な目標は、2つ以上の他のクラスで新しいクラスを作成することです。それらは何も共有せず、あるいはほんの少しのメソッドを共有するだけですか?そして最終的にはクリーンなコードを書きますか?:)
だから私はたくさんのスクリプトを試しました...それらはすべてそのテクニックを使用しています。あるいは、私は間違っているかもしれませんが、それはおそらく本当です。
また、クラスがJSに存在しないことも知っています。これは、単なる大きな関数です。このようなオブジェクトを書く方がいいですか?関数の使用は私の意見では少し混乱しているので、私はそれをとても好きになる傾向があります。たぶん、継承はこの方法ではるかに簡単ですか?
var envObject = {
position: {x, y}
}
var oCircle = {
foo: function(){}
}