Расширение классов
Привет всем!
Есть проект с 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, время: 20:05. |