Сообщение от khusamov
|
Я наверное плохо донес... это свойство JS я в общем-то знаю. Просто я считал, что классовая система Ext исправила ситуацию.
|
Честно сказать, мы бы исправили, если бы это было возможно. Но это не единственный косяк JavaScript, с которым приходится жить, поэтому проще сжать булки и иметь в виду.
Цитата:
|
Спасибо! Теперь есть чем заняться. Буду все написанные классы исправлять, там много у меня подобных свойств.
|
Лучше поздно в цикле разработки, чем после внедрения. Поверьте моему больному опыту. ;)
Цитата:
|
Мне сейчас придется начальные значения этих свойств описывать в конструкторе. По идее, классовая система Ext может это делать за меня, если в конфиге класса найдет такие свойства. Хотя бы так.
|
Неа-неа. Это вам кажется, что всё просто и классовая система может всё за вас сделать. В отдельно взятом простом случае, оно может быть и так. Но на всю библиотеку этот подход не масштабируется никак.
Цитата:
|
Но это не принципиально, просто заранее надо знать, что этот момент Ext не решает и надо самому не попасться.
|
Вы всё же путаете конфиги и обычные свойства. Для конфигов наследование как раз делается классовой системой:
Ext.define('Foo', {
config: {
blerg: {
frobbe: 'throbbe'
}
}
});
Ext.define('Bar', {
extend: 'Foo',
config: {
blerg: {
qux: 'xyzzy'
}
});
var beer = new Bar({
blerg: {
foo: 42
}
});
console.log(beer.getBlerg());
// {
// foo: 42,
// frobbe: 'throbbe',
// qux: 'xyzzy'
// }
var gurgle = new Bar({
blerg: {
frobbe: 'zingbong'
}
});
console.log(gurgle.getBlerg());
// {
// frobbe: 'zingbong',
// qux: 'xyzzy'
// }
Ну, я малость разошёлся с именами метапеременных, но надеюсь, что понятно всё же будет. ;)