Правильное указание ссылки на объект в js? Здравствуйте. Есть 2 объекта и каждый из них должен уметь обращаться к другому (к методам и значениям) из себя.class Object1 { constructor() { this.object2 = new Object2(this); } } class Object2 { constructor(object) { this.object1 = object; } } var object = new Object1(); Правильно ли это сделано? Или есть другой способ без наследования?
Да, данное решение правильно сделано. Оно использует композицию объектов, где объекты взаимодействуют друг с другом через свои ссылки. В данном случае 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. Это простой и гибкий способ для объектов взаимодействовать друг с другом без использования наследования.
Да, данное решение правильно сделано. Оно использует композицию объектов, где объекты взаимодействуют друг с другом через свои ссылки. В данном случае 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. Это простой и гибкий способ для объектов взаимодействовать друг с другом без использования наследования.