Правильное указание ссылки на объект в js? Здравствуйте. Есть 2 объекта и каждый из них должен уметь обращаться к другому (к методам и значениям) из себя.class Object1 { constructor() { this.object2 = new Object2(this); } } class Object2 { constructor(object) { this.object1 = object; } } var object = new Object1(); Правильно ли это сделано? Или есть другой способ без наследования?

7 Июн 2021 в 20:07
346 +1
1
Ответы
1

Да, данное решение правильно сделано. Оно использует композицию объектов, где объекты взаимодействуют друг с другом через свои ссылки. В данном случае Object1 содержит ссылку на Object2, а Object2 содержит ссылку на Object1.

Если вы хотите избежать наследования, а хотите чтобы объекты взаимодействовали друг с другом, можно использовать callback функции или события. Например:

class Object1 {
constructor() {
this.callback = null;
}
setObject2Callback(callback) {
this.callback = callback;
}
doSomething() {
this.callback();
}
}
class Object2 {
constructor() {
// можно передать ссылку на Object1, если это необходимо
}
doSomething() {
// реализация метода
}
}
const object1 = new Object1();
const object2 = new Object2();
object1.setObject2Callback(() => {
object2.doSomething();
});
object1.doSomething();

В данном случае Object1 содержит метод setObject2Callback, который принимает callback функцию. При вызове метода doSomething у Object1, он вызывает callback функцию, которая затем вызывает метод doSomething у Object2. Это простой и гибкий способ для объектов взаимодействовать друг с другом без использования наследования.

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