所以我有几个课程
function BaseClass(x, y){
this.x = x;
this.y = y;
}
function ImageClass(img, w, h, x, y){
BaseClass.call(this, x, y);
this.img = img;
}
ImageClass.prototype = Object.create(BaseClass.protoype);
ImageClass.prototype.constructor = ImageClass;
function LayerClass(img, w, h, x, y){
ImageClass.call(img, w, h, x, y);
this.collection = [];
this.createSprite = function(img, r, a, w, h, x, y){
this.collection.push(new Sprite(img, r, a, w, h, x, y));
}
}
LayerClass.prototype = Object.create(ImageClass.prototype);
LayerClass.prototype.constructor = LayerClass;
function SpriteClass(img, r, a, w, h, x, y){
ImageClass.call(img, w, h, x, y);
this.r = r;
this.a = a;
}
SpriteClass.prototype = Object.create(ImageClass.prototype);
SpriteClass.prototype.constructor = SpriteClass;
在我的代码中,每个继承的类都使用call()来传递'this'
问题是如果我有一个包含任何Sprite对象的Layer对象,我希望Sprite对象有一个父(超级)引用,我不能这样做,因为类构造函数使用它来设置属性
所以有人知道我如何传递父母或者(我知道这听起来很愚蠢,已经晚了)能够在类构造函数中获取父作用域吗?
在写这篇文章时,我意识到它可能就像在将对象设置为子项之后设置父属性一样简单,但我正在寻找确认,如果这是最好的方式或者如果有人知道更好的事情。也随意告诉我,我对原型一无所知,因为我还在学习它。 : - )
-Thanks
答案 0 :(得分:0)
这会有用吗?它不是自动的,但仍然有效。 Javascript没有对类的本机支持,因此它有其局限性。
function LayerClass(img, w, h, x, y){
ImageClass.call(img, w, h, x, y);
this.collection = [];
this.createSprite = function(img, r, a, w, h, x, y){
var spriteObj = new Sprite(img, r, a, w, h, x, y);
spriteObj.parent = this;
this.collection.push(spriteObj);
}
}
您将能够访问spriteObject的父变量。
另外,如果您正在寻找继承,请尝试使用咖啡脚本。它会编译回javascript并为您处理大部分继承问题。