我正在学习画布 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.
谢谢你的想法!