Java类具有用于操作这些属性的属性和方法。ExtJS类有属性、方法和configOptions
。
从概念上讲,configOptions
和属性有什么区别?为什么我们两者都需要?
As per my understanding…
更多信息配置,在构造函数中传递类,它定义了行为的配置在运行时不能改变,因为它不会有任何影响,假设你需要指定一个标题的面板就可以添加一个配置如
{ title : 'some title' }
将使用面板设置面板的标题在呈现时,但在那之后,即使你试图改变标题,你不能改变配置选项的属性通过简单地改变。属性 -用于存储对该类有用的信息,这些信息通常不会通过构造函数传递,但应该有getter和setter方法,您可以在运行时更改属性(如果定义了setter方法)并且类对象应该检测到这种更改,也可以有只读属性,这些属性也可以由类对象修改,但我们不应该全部更改。
Sencha:属性vs配置,在Ext 4文档
我对这个问题的回答有点过于简单和理想化。我担心试图给出一个涵盖所有微妙之处的完整答案更有可能增加混乱,而不是澄清情况。配置选项用于在创建对象时对其进行配置。在实例化对象之后,尝试将它们设置为对象的属性通常不会产生任何效果。
Ext.create('Ext.panel.Panel', {
// config options go here
});
一个对象会有很多属性,但是只有properties部分中列出的那些应该被认为是公共属性。虽然没有什么可以阻止您访问私有属性,但您应该将其作为最后的手段,尽可能使用文档中的方法来操作它们。
// 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();
...
}
界线模糊的一个原因是对象通常会像这样将它们的配置复制到自己身上:
Ext.apply(this, config);
这导致所有的配置选项成为私有属性,至少在最初。内部类可以适当地操作这些属性,但外部访问这些属性是违反封装的,应该避免。