【发布时间】:2014-01-02 10:23:59
【问题描述】:
我正在使用 Qooxdoo 来扩展一个不属于 Qooxdoo 的类。正在扩展的类有一个名为“graphics”的属性。
当我创建类的实例时,我可以毫无问题地访问该属性。我也可以在成员函数中访问它。但我无法在构造函数中访问它。
我的问题:
为什么我不能在构造函数中访问有问题的属性?有什么办法吗?
使用 qooxdoo 扩展非 qooxdoo 类通常是个好主意,还是会以意想不到的方式咬我?我对 qooxdoo 的经验很少。
为了更好地理解,这里是有问题的代码:
这不工作,导致“this.graphics is undefined”:
qx.Class.define('l5o.Sprite',{
extend : Sprite,
construct : function(){
this.graphics.beginFill( 0xff0000 );
this.graphics.drawRect( 0, 0, 100, 100 );
}
});
var mysprite = new l5o.Sprite;
这确实有效:
qx.Class.define('l5o.Sprite',{
extend : Sprite,
members : {
init : function(){
this.graphics.beginFill( 0xff0000 );
this.graphics.drawRect( 0, 0, 100, 100 );
}
}
});
var mysprite = new l5o.Sprite;
mysprite.init();
这确实也有效:
qx.Class.define('l5o.Sprite',{
extend : Sprite
});
var mysprite = new l5o.Sprite;
mysprite.graphics.beginFill( 0xff0000 );
mysprite.graphics.drawRect( 0, 0, 100, 100 );
【问题讨论】:
-
解决方法:添加以下行作为构造函数的第一行:
Sprite.apply(this);
标签: javascript inheritance qooxdoo