node.js サーバーでブラウザ ベースのゲームを開発しています。コンポーネントベースの継承構造を実装しようとしていますが、javascript 継承に関する概念がよくわかりません。
function Moves(){}
私の知る限り、と などの2 つのコンポーネント オブジェクトから継承したい場合function IsVisible(){}
、通常のプロトタイプの継承は機能しません。
gameObject.prototype = new Moves;
gameObject.prototype = new IsVisible;
isオブジェクトは、オブジェクトをプロトタイプとしてIsVisible
上書きします。Moves
gameObject
以下は、ターゲット オブジェクトと任意の数のコンポーネント オブジェクトを引数として受け取る継承関数を作成しようとした試みです。ターゲット オブジェクトは、これらのコンポーネントから動作と変数を継承します。
私は JavaScript の継承に詳しくないので、以下のメソッドが JavaScript で複数の継承型構造を実装する良い方法であるかどうかを知りたいですか?
この問題に対処するための確立されたプラクティスは他にありますか? (それが問題である場合... )
どんな助けでも大歓迎です。
function inherit(o){
var proto = o;
for(var i = 1; i < arguments.length; i++){
var component = new arguments[i]();
for(var x in component){
proto[x] = component[x];
}
}
}
function Player(name){
var o = {};
o.name = name;
inherit(o, WorldSpace, Active);
return o;
}
function WorldSpace(){
this.pos = {x:0, y:0};
this.orientation=0;
}
function Active(){
this.acceleration = 1;
this.velocity = {x:0,y:0};
this.rotation = 0;
this.rotationSpeed = (Math.PI*2)/30;
this.throttle = false;
this.currentSpeed = 0;
this.maxSpeed = 10;
}