model-view-controller - 在 ExtJS 中,callParent() 与 initConfig 与父类(super class)

标签 model-view-controller extjs

这些片段之间有什么区别?:

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

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

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

并且,与 constructor 相比,覆盖其他方法有何不同? ?

最佳答案

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

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

  • 将对象的初始配置与传入的配置合并
  • 为配置中的所有属性创建 getter 和 setter
  • 将配置应用到对象

  • 这与调用父构造函数完全不同。调用父构造函数的作用完全取决于它的编写目的。有些人会使用 initConfig ,有些不会,有些会做 initConfig 做的类似的事情,但手动。

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

    边注

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

    关于model-view-controller - 在 ExtJS 中,callParent() 与 initConfig 与父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115070/

    相关文章:

    iOS MVC - 数据类型转换发生在哪里?

    javascript - 将 ID 从所选项目传递到 Controller

    php - 删除数据库记录 MVC

    java - 将模型传递给 MVC 中的 View

    javascript - extjs 3.4 如何动态添加复选框到工具栏

    javascript - extjs饼图所有图例显示相同颜色

    asp.net - 获取数据绑定(bind) Ext.NET GridPanel 上的当前数据项(行)

    ruby-on-rails - 测试和建立连接

    extjs - 使用 Ext JS 为选项卡添加书签?

    javascript - TypeError : combo. getSelection (...) 在渲染事件中为 null。扩展6