我读过的所有 ExtJS 文档和示例都建议像这样调用超类方法:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
MyApp.MyPanel.superclass.initComponent.call(this);
}
});
我使用这种模式已经有一段时间了,主要问题是,当你重命名你的类时,你还必须更改所有对超类方法的调用。这很不方便,我经常会忘记,然后我必须追查奇怪的错误。
但是阅读Ext.extend()
我发现的源代码,我可以使用添加到原型的superclass()
orsuper()
方法:Ext.extend()
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
this.superclass().initComponent.call(this);
}
});
在这段代码中,将 MyPanel 重命名为其他名称很简单——我只需要更改一行。
但我有疑问...
我没有在任何地方看到过这种记录,而古老的智慧说,我不应该依赖无证行为。
我在 ExtJS 源代码中没有发现这些
superclass()
和方法的单一用途。supr()
当您不打算使用它们时,为什么要创建它们?也许这些方法在某些旧版本的 ExtJS 中使用过,但现在已被弃用?但它似乎是一个非常有用的功能,你为什么要弃用它?
那么,我应该使用这些方法吗?