캔버스 API를 배우고 있으며이를 수행하는 데 간단한 물리 엔진을 만들고 싶습니다. 이번 여름에 Backbone.js로 작업 한 후에 JS에서의 OO 접근법에 영감을 받았습니다.여러 번 상속 할 수있는 객체를 만드는 방법은 무엇입니까?
해결할 내 문제를 알고, 나는 내 솔루션을 제안 할 것이지만이 문제를 해결할 더 좋은 방법이 있다고 생각한다면 그렇게 말하십시오.
// Obj is a general object that can be basically anything. (Ball, rock, ground plane)
var Obj = Extendable.extend(
position : [0, 0], // Coordinates
velocity : [0, 0], // Vector,
acceleration : [0, 0], // Vector
shape : (Shape)
);
var Ball = Obj.extend(
shape : (Shape)
);
var ball1 = new Ball();
var ball2 = new Ball(initializer);
목표는 좋은 것 즉, 그것뿐만 아니라 다중 상속을 가질 수 있다면 new Object();
를 호출하기 전에 내가 원하는만큼을 연장 할 수있다.
는 지금은 이것으로 왔어요 : 당신의 생각에 대한
var Extendable = {
extend : function(methods) {
var f = function() {
if (this.init) this.init.apply(arguments);
};
f.prototype = Object.create(_.extend({}, this.prototype, methods));
f.extend = this.extend;
return f;
}
};
//The problem is that this only allows the use of .extend() one time...
EDIT: Now half way working.
감사합니다!
나는 실제로 내가 해결책을 찾은 것 같아요. 나는 그것을 조금 시험해보고 대답을 게시 할 것이다. 문제는, 실제로 해결책을 찾은 경우, _.extend()의 논리를 잊었다는 것입니다. 프로토 타입 체인을 유지할 수 없어도 객체를 통과합니다. 체인에 관한 모든 것을 잊어 버리는 완전히 새로운 객체를 만듭니다. –
다른 누구도 같은 문제가있는 경우 대답을 추가했습니다. :) –