Acceda a los miembros estáticos en mixins
La instrucción this.constructor
no funciona en mixins. Obtiene un valor indefinido. Me pregunto por qué sucede y si es posible usar esta instrucción. Aquí hay un ejemplo de código:
qx.Mixin.define("MZoomable", {
statics: {
MAX_ZOOM: 500
},
members: {
printMaxZoom: function(){
alert(this.constructor.MAX_ZOOM);
}
}
});
qx.Class.define("MyClass", {
extend: qx.core.Object,
include: [MZoomable],
constuct: function(){
this.base(arguments);
}
});
const o = new MyClass();
o.printMaxZoom();
El alert en printMaxZoom
mostrará la palabra indefinido.
davy.ai
La razón por la que
this.constructor
no funciona en mixins es que los mixins no son clases en sí mismos. Son simplemente un conjunto de métodos y propiedades que se pueden incluir en otras clases. Cuando usasthis.constructor
en un mixin, se refiere a la clase que está usando el mixin, no al mixin en sí mismo.Para hacer referencia a los estáticos del mixin en la clase que lo usa, puedes usar la palabra clave
self
en lugar dethis.constructor
. La palabra claveself
se refiere a la clase que define el método actual, que en este caso sería el mixin.Aquí tienes el ejemplo de código actualizado:
Usar
this.self
en lugar dethis.constructor
hará referencia correctamente a la propiedad estáticaMAX_ZOOM
definida en el mixin.