Показать сообщение отдельно
  #1 (permalink)  
Старый 20.10.2017, 19:10
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Наследование классов в JavaScript
Здравствуйте.
Прочитал статью в учебнике сайта. Написано хорошо, но когда пытаешься применить на практике - ничгео не работает - всё из-за плохого знания языка.

Создал свой пример (который не работает), для освоения материала - старался сделать его как можно проще.

Есть родительский класс и четыре потомка.

Вопросов много, но постараюсь быть конструктивным.

1) Как правильно обращаться к методам родителя. Сейчас у меня это получается коряво:
// Menu.prototype.eventClickMenuItem
self.__proto__.__proto__.actionContentGet(self);;

// Green.prototype.actionLoadContent, Red.prototype.actionLoadContent
this.__proto__.viewTitle(undefined, color, title);


2) Когда я обращаюсь к родителю метода viewTitle, я вынужден передать переменные как аргументы метода. Можно как то задать в методе actionLoadContent значения свойствам this.color и this.title , и потом уже вытащить эти значения в методе viewTitle?

3) Сейчас, что бы обратиться из родительского класса к методу потомка, я вынужден создать экземпляр класса потомка, и уже из этого экземпляра класса, обратиться к нужному мне методу.

При этом если я уйду в метод потомка, я теряю все значения, которые сохранены в свойствах родителя. Что с этим делать?

И каждый раз создавая новые экземпляры классов, что происходит со старыми? Удаляются ли "старые" экземпляры класса? Память не страдает?
switch(self.color){
        case 'red':
            var model = new Red();
            model.actionLoadContent(self.color, self.title);
            break;
        case 'green':
            var model = new Green();
            model.actionLoadContent(self.color, self.title);
            break;
        case 'yellow':
            var model = new Yellow();
            model.actionLoadContent(self.color, self.title);
            break;
        default:
            throw ('selected unknow color');
    }


Спасибо

Последний раз редактировалось Faab, 21.10.2017 в 09:32.
Ответить с цитированием