Как переопределить объект изнутри? Не знаю возможно ли такое вообще, но возникла следующая идея, и вытекающая из нее проблема, Нужно создать несколько объектов, каждый объект для создания делает несколько запросов к базе. В результате работы приложения часто создаются идентичные объекты, для того чтоб каждый раз не дергать базу для их создания я решил в глобальный массив записывать ссылки на созданные объекты, далее при вызове конструктора я смотрю был ли создан объект ранее, и если да, то копирую его свойства в данный объект. Способ прекрасно работает но там есть нюанс в том, что передать данный способом получается только public свойства. Может есть вариант получше? Еще был вариант создавать объект через статический метод который будет проверять был ли ранее создан объект и возвращать либо его, либо новый, но хотелось бы обойти только конструктором
Для переопределения объекта изнутри и сохранения приватных свойств можно воспользоваться шаблоном проектирования 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, и если да, то будет возвращен этот объект. Таким образом, вы сможете сохранить приватные свойства объекта и обойти создание нового объекта.
Для переопределения объекта изнутри и сохранения приватных свойств можно воспользоваться шаблоном проектирования 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, и если да, то будет возвращен этот объект. Таким образом, вы сможете сохранить приватные свойства объекта и обойти создание нового объекта.