Extjs配置与属性

Vic*_*tor 3 config properties extjs3

Java类具有用于操作这些属性的属性和方法.ExtJS类具有属性,方法和configOptions.
从概念上讲,configOptions与属性有什么区别?为什么我们需要两者?

Sak*_*tel 10

据我了解......

CONFIGS -在构造函数中,它定义了类的行为过去了,CONFIGS不应该在运行时改变,因为它不会有任何影响,假设你需要指定面板标题,然后你可以添加一个配置如{ title : 'some title' }说将由面板用于在渲染时设置面板的标题,但在此之后,即使您尝试更改标题,也不能通过更改该配置选项来更改属性.

属性 -用于存储这对于该类是有用的信息,这通常不是通过构造通过,但应具有获取和设置方法,可以在运行时改变(如果setter方法被定义的)属性和类对象应该检测本更改,只有只读属性也可以由类对象修改,我们不应该更改它.

更多信息

在Ext 4文档中,Sencha:Properties vs Configs

我对这个问题的回答有点简单和理想主义.我害怕试图给出一个涵盖所有细微之处的完整答案更有可能增加混乱而不是澄清情况.

配置选项用于在创建对象时配置对象.在实例化对象后尝试将它们设置为对象上的属性通常不起作用.

Ext.create('Ext.panel.Panel', {
    // config options go here
});
Run Code Online (Sandbox Code Playgroud)

对象将具有许多属性,但只有属性部分中列出的属性才应被视为公共属性.虽然没有什么可以阻止您访问私有属性,但您应该只作为最后的手段,尝试使用记录的方法来尽可能地操作它们.

// rendered is a public property used to indicate whether the panel has been rendered
if (panel.rendered) {
    // could just do panel.el but that isn't a public property, so use getEl instead
    var el = panel.getEl();
    ...
}
Run Code Online (Sandbox Code Playgroud)

线条变得模糊的一个原因是对象通常将它们的配置复制到自己身上,如下所示:

Ext.apply(this, config);
Run Code Online (Sandbox Code Playgroud)

这导致所有配置选项成为私有属性,至少在最初.然后,内部类可以适当地操作这些属性,但从外部访问这些属性是违反封装的,应该避免.