这些摘要之间有什么区别?:

constructor: function(config) {
    this.initConfig(config);
}

constructor: function(config) {
    this.callParent(arguments);
}

constructor: function(config) {
    this.superclass.constructor.call(this, config);
}


AND,与constructor相比,覆盖OTHER方法有何不同?

最佳答案

第二段和第三段在功能上是等效的。 callParent只是调用父函数的一种更简洁的方法,而不是通过superclass属性。

第一个例子是完全不同的。首先,它不调用父级的构造函数。这通常是坏消息。基类通常具有一些需要完成的初始化,而忘记为构造函数(和initComponent)调用父类是常见的错误来源。

initConfig是一种便捷方法,它将:


将对象的初始配置与传入的配置合并
为配置中的所有属性创建获取器和设置器
将配置应用于对象


这与调用父构造函数完全不同。调用父构造函数的行为完全取决于其编写的工作。有些将使用initConfig,有些则不会,而另一些将执行与initConfig相似的操作,但是要手动进行。

不必使用initConfig,有时甚至很危险。但这完全是另一回事了(对于Ext 4.1,initConfig看起来是无害的,并且不包含与4.0中相同的危险副作用)

边注

只是指出。在第二个和第三个代码段中,不需要构造函数。如果您的构造函数仅调用父级的构造函数,则可以完全不使用您的构造函数。

09-25 19:38