Как разработать иерархию конструкторов объектов на JavaScript Привет. Вопрос про серверный JavaScript, хотя это не принципиально. Опыта написания серьезных приложений на JS нету, на днях столкнулся с проблемой — как организовать иерархию наследования. Я пишу пока-что небольшой TCP сервер, который буду расширять, поэтому встало комом наследование.
У кого есть опыт? Какие-то шаблоны?
Я пробовал использовать фабрику, но не выходит унаследовать методы -> pastebin.com/Nn7TymAN
Как можно это реализовать?
Возможно сделать наследование инкапсулированых методов?

21 Авг 2019 в 07:10
155 +1
1
Ответы
1

Есть несколько способов организации иерархии конструкторов объектов на JavaScript. Один из самых популярных способов - использование прототипного наследования.

Пример иерархии конструкторов объектов с использованием прототипного наследования:

function Parent() {
this.parentProperty = 'Parent property';
}
Parent.prototype.parentMethod = function() {
console.log('Parent method');
};
function Child() {
Parent.call(this); // Вызываем конструктор родителя
this.childProperty = 'Child property';
}
Child.prototype = Object.create(Parent.prototype); // Наследуем прототип родителя
Child.prototype.constructor = Child; // Устанавливаем правильный конструктор
Child.prototype.childMethod = function() {
console.log('Child method');
};
var child = new Child();
console.log(child.parentProperty); // Выведет 'Parent property'
child.parentMethod(); // Выведет 'Parent method'
console.log(child.childProperty); // Выведет 'Child property'
child.childMethod(); // Выведет 'Child method'

В данном примере класс Child наследует свойства и методы от класса Parent с помощью прототипного наследования.

Для инкапсуляции методов можно использовать замыкания:

function Parent() {
var privateMethod = function() {
console.log('Private method');
};
this.publicMethod = function() {
console.log('Public method');
privateMethod();
};
}
function Child() {
Parent.call(this); // Вызываем конструктор родителя
}
var child = new Child();
child.publicMethod(); // Выведет 'Public method' и 'Private method'
child.privateMethod(); // Ошибка - privateMethod не доступен извне

В данном примере метод privateMethod инкапсулирован и не доступен извне класса Parent, только метод publicMethod может его вызвать.

Надеюсь, эти примеры помогут вам разобраться с организацией иерархии конструкторов объектов на JavaScript.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 727 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир