Как переопределить объект изнутри? Не знаю возможно ли такое вообще, но возникла следующая идея, и вытекающая из нее проблема,
Нужно создать несколько объектов, каждый объект для создания делает несколько запросов к базе.
В результате работы приложения часто создаются идентичные объекты, для того чтоб каждый раз не дергать базу для их создания я решил в глобальный массив записывать ссылки на созданные объекты, далее при вызове конструктора я смотрю был ли создан объект ранее, и если да, то копирую его свойства в данный объект. Способ прекрасно работает но там есть нюанс в том, что передать данный способом получается только public свойства. Может есть вариант получше?
Еще был вариант создавать объект через статический метод который будет проверять был ли ранее создан объект и возвращать либо его, либо новый, но хотелось бы обойти только конструктором

21 Авг 2019 в 07:07
169 +1
0
Ответы
1

Для переопределения объекта изнутри и сохранения приватных свойств можно воспользоваться шаблоном проектирования Singleton. В этом случае вы можете создать приватное статическое поле в вашем классе, которое будет хранить единственный экземпляр объекта. Таким образом, при вызове конструктора класса вы будете проверять, был ли объект уже создан, и возвращать его, если да.

Пример:

class MyClass {
constructor() {
if (MyClass.instance) {
return MyClass.instance;
}
// ваш код для создания объекта и получения свойств из базы данных
MyClass.instance = this;
}
}
const obj1 = new MyClass();
const obj2 = new MyClass();
console.log(obj1 === obj2); // true

В этом примере при создании нового объекта класса MyClass будет проверяться, был ли уже создан объект instance, и если да, то будет возвращен этот объект. Таким образом, вы сможете сохранить приватные свойства объекта и обойти создание нового объекта.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир