Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Наследование классов в JavaScript (https://javascript.ru/forum/misc/71036-nasledovanie-klassov-v-javascript.html)

Faab 20.10.2017 19:10

Наследование классов в 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');
    }


Спасибо

Nexus 20.10.2017 19:52

Faab,
Цитата:

Сообщение от Faab
Как правильно обращаться к методам родителя.

Вы переопределяете метод родителя у ребенка и пытаетесь из ребенка вызвать метод родителя?
Если нет, то методы родителя вызываются как свои собственные.

На остальные вопросы я не могу сформулировать ответ, уверен, кто-нибудь другой вам ответит.


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