Расширение классов
Привет всем!
Есть проект с 3 модулями, большая часть функционала которых похожа. Решил сделать 1 модуль-ядро, объединяющий в себе этот общий функционал. Сделал этот модуль рабочим с полной MVC-структурой, теперь хочу остальные сделать так, чтобы они по сути наследовались от этого модуля-ядра. Вопросы такие: - при наследовании от ядра лучше создать аналогичную структуру с наследованием от аналогичных элементов модуля-ядра или есть какой-то более рациональный способ? - наследование правильнее делать через override или define вида
//представление дерева модуля-ядра
Ext.define('Project.common.view.Tree' ,{
extend : 'Ext.tree.Panel',
alias : 'widget.systemtree',
...
});
//представление дерева модуля-наследника
Ext.define('Project.viewer.view.Tree' ,{
extend : 'Project.common.view.Tree',
...
});
|
Цитата:
|
Define - верным путём идёте товарищ.
Вот только правильнее это называть не ядром, а базовым классом. |
Цитата:
|
а для общего развития - override для чего вообще используется?
|
грубо говоря
define обьявляет класс create- создаёт экземпляр override изменяет существующий класс/экземпляр класса, производит переопределение/перегрузку пример 1) перегрузка метода в экземпляре класса.
var panel = new Ext.Panel({ ... });
Ext.override(panel, {
initComponent: function () {
// ваш добавленный функционал
this.callParent();
}
});
пример 2) перегрузка метода в обьявленном классе
Ext.define('My.Cat', {
constructor: function() {
alert("I'm a cat!");
}
});
My.Cat.override({
constructor: function() {
alert("I'm going to be a cat!");
this.callParent(arguments);
alert("Meeeeoooowwww");
}
});
var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
// alerts "I'm a cat!"
// alerts "Meeeeoooowwww"
|
| Часовой пояс GMT +3, время: 11:06. |