node.js 서버에서 브라우저 기반 게임을 개발 중입니다. 구성 요소를 기반으로 상속 구조를 구현하려고하지만 자바 스크립트 상속에 관해서 개념이 확실하지 않습니다.자바 스크립트 구성 요소 기반 게임 디자인
내가 할 수있는 한, 두 개의 구성 요소 개체 (예 : function Moves(){}
및 function IsVisible(){}
, 일반적인 프로토 타입 상속은 작동하지 않습니다
gameObject.prototype = new Moves;
gameObject.prototype = new IsVisible;
는 IsVisible
객체가 gameObject
프로토 타입으로 Moves
개체를 덮어 씁니다.
다음은 대상 개체와 임의의 수의 구성 요소 개체를 인수로 사용하는 상속 함수를 작성하려는 시도입니다. 그런 다음 대상 객체는 이러한 구성 요소에서 동작 및 변수를 상속받습니다.
저는 자바 스크립트 상속에 익숙하지 않고 아래의 메소드가 자바 스크립트에서 다중 상속 유형 구조를 구현하는 좋은 방법인지 알고 싶습니다.
이 문제를 다루는 잘 정립 된 다른 관행이 있습니까? (문제가있는 경우 ...)
어떤 도움을 주시면 감사하겠습니다.
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;
}
플레이어를 생성자로 만들고 웹의 모든 곳에서 볼 수있는 전통적인 자바 방식 상속 방법을 사용하십시오. – Bergi
@Bergi Javascript는 다중 상속을 지원하지 않으므로'person.prototype = new WorldSpace; person.prototype = new Active'가 작동하지 않습니다. – RobotEyes
다중 상속을 원하지 않는다. 믹스 인을 원한다. 코드에는 프로토 타입이 없다. AaditMShah 완벽하게 맞습니다. – Bergi