Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ООП: переписать метод через наследование (https://javascript.ru/forum/misc/49595-oop-perepisat-metod-cherez-nasledovanie.html)

Фархад Рахимжанов 20.08.2014 13:40

ООП: переписать метод через наследование
 
Имеется код:
(function() {

SUGAR.quickCompose = {};

SUGAR.quickCompose = function() {
	return {
		loadResources: function(o) { ... },
		init: function(o) { ... },
		...
	}
}(); // SUGAR.quickCompose
})(); // function()


Могу ли я унаследовать "класс" SUGAR.quickCompose и переписать метод "loadResources"?
Буду благодарен за пример кода.

PS: Представленный выше код доступен "в режиме чтения" (код ядра системы).

skrudjmakdak 20.08.2014 13:56

а у этой системы готовый метод типа define? например у фреймворка extjs есть такой метод, который создает новый класс от какого либо другого класса

Фархад Рахимжанов 20.08.2014 14:17

Исследование кода показало, что подобные методы отсуствуют.

skrudjmakdak 20.08.2014 14:32

я хочу сказать что приглядевшись (бывает, туплю) я увидел что SUGAR.quickCompose будет являться не классом а объектом.

класс это грубо говоря функция. да там функция, но она сразу же и выполняется и превращается в объект.. понимайте?

нельзя ли просто добавить туда еще один метод типа loadResources2: function () {/* трололо */};

Фархад Рахимжанов 20.08.2014 14:54

Да, Вы правы, это объект.
К сожалению, код доступен "в режиме чтения".

Судя по всему придеться искать костыльные решения :-)

skrudjmakdak 20.08.2014 14:58

в плане для чтения? закодирован что ли?

Фархад Рахимжанов 21.08.2014 06:33

Это файл ядра системы.
Мы разрабатываем "сторонний" модуль по принципу "upgrade-safe".

skrudjmakdak 21.08.2014 08:29

а что мешает переопределить функцию в объекте?

можно конечно скопировать все свойства и методы этого (разумеется готового) объекта и сохранить в другой объект. пробежаться по свойствам объекта можно с помощью цикла for(var prop in myObj) {...}

BETEPAH 21.08.2014 09:18

Цитата:

Сообщение от Фархад Рахимжанов
PS: Представленный выше код доступен "в режиме чтения" (код ядра системы).

невозможность изменить код функции не означает, что Вы не можете эту функцию написать еще раз ниже этого кода. А там уже пишите свой loadResources.


Часовой пояс GMT +3, время: 19:09.