gpt4 book ai didi

javascript - Ext 继承 - 无法从基类/抽象类获取静态值

转载 作者:行者123 更新时间:2023-11-30 17:00:17 24 4
gpt4 key购买 nike

我这里有两个类,ShapeRectangle - 其中 Rectangle 继承自 Shape。
这是父类:

Ext.define('Shape', {
id: 1,
name: 'ShapeX',
static: {
drawnShapes: ['Shape1', 'shape2'],
getDrawnShapesCount: function () {
console.log('the number of drawn shapes is :'
+ this.drawnShapes.length );
}
},
draw: function (newShape) {
debugger;
var newShape;
this.static.drawnShapes.push(newShape);
console.log( newShape
+ ' is drawn.... \n the number of drawnShapes is '
+ this.static.drawnShapes.length
+ '" \n Shape class defined!' );
}
});

这是我继承自父类的类:

Ext.define('Rectangle', {
extend: 'Shape',
draw: function (Arrlenght,base.newShape) {
var Arrlenght = inheritableStatics.drawnShapes.length;
alert(Arrlenght); // I need this array value?

if (Arrlenght <= 10) {
this.callParent();
} else {
console.log('Too many shapes drawn!');
}
console.log('Drawing a Rectangle...');
}
});

我的问题出在 draw 中的 Rectangle 类中方法 - 我想获得 drawShapes 的长度来自父类的数组 - 如果长度为 <= 10调用将添加新形状的父级,否则返回消息:“绘制的形状太多!”

如何引用静态数组?

最佳答案

开头的两个错误:

  • static 应该是 statics(复数)——你不需要它是因为...
  • inheritableStatics 是配置属性而不是运行时访问器,如果您想在子类中使用这些变量,则应在 Shape 上定义它。
Ext.define('Shape', {
// ...
inheritableStatics: {
drawnShapes: ['Shape1', 'Shape2']
}
});

然后如果你想引用静态变量,你可以使用存在于每个对象实例上的 self 属性 - 这基本上是对其原型(prototype)/类的引用:

Ext.define('Rectangle', {
extend: 'Shape',
// ...
draw: function(/* args */){
console.log(this.self.drawnShapes); // do stuff
}
});

关于javascript - Ext 继承 - 无法从基类/抽象类获取静态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29006672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com