【发布时间】:2012-05-06 15:43:17
【问题描述】:
我的情况是我正在使用 Box2DWeb 开发 Canvas 游戏,所以我有一个名为 Sprite 的类,它可以将图像绘制到 Canvas,我现在想创建一个 PhysicsSprite 类从 Sprite 继承方法和属性。
我的 Sprite 类(Sprite.js):
Sprite = function (position, dimension, image) {
this.Position = position;
this.Dimension = dimension;
if (image)
this.Image = image;
...
this.Draw = function (g) {
...
}
...
};
我在 PhysicsSprite (PhysicsSprite.js) 中设置原型,如下所示:
PhysicsSprite = function(position, dimension, world) {
this.prototype = new Sprite(position, dimension, undefined);
//alert(this.prototype.Position.X)
var body = CreateBody();
this.GetBody = function () { return body; }
this.Draw = function (g) {
...
}
function CreateBody () {
...
}
};
注意 alert(this.prototype.Position.X),它会提醒我位置,但如果我将代码更改为 this.Position.X ,我得到一个错误,同样,如果我有一个 PhysicsSprite 的实例,我必须显式调用原型。
这让我认为我没有设置对象的原型,只是创建了一个名为prototype 的属性,并将其设置为一个新的Sprite。
如果有人可以帮助我,并解释我做错了什么,那将不胜感激。 我有阅读障碍,所以我总是拼错变量,这令人沮丧,所以这是我寻找的第一件事,但对我来说一切都很好。
【问题讨论】:
-
你是对的。我建议查看 MDN 文档以获取示例:developer.mozilla.org/en/JavaScript/Guide/… 和 developer.mozilla.org/en/JavaScript/Guide/Inheritance_Revisited。这个问题也可能有帮助:stackoverflow.com/questions/7944880/…
标签: javascript inheritance prototype