Есть ли способ создать новый экземпляр класса без вызова его конструктора?
Что-то вроде этого:
class Test {
constructor(foo) {
this.foo = 'test';
}
}
const a = new Test('bar'); // call constructor
const b = Test.create(); // do not call constructor
console.log(a.foo, a instanceof Test); // bar, true
console.log(b.foo, b instanceof Test); // undefined, true
Я пытаюсь разработать TS mongo ORM и хотел бы использовать конструкторы сущностей для создания новых объектов, но не хочу вызывать их при создании экземпляров сущностей уже сохраненных объектов (тех, которые уже хранятся в БД).
Я знаю, что доктрина (PHP ORM) использует этот подход, но, на самом деле, они используют прокси-классы для его достижения. Есть ли простой способ добиться этого в машинописном тексте (или вообще в ES6/ES7)?
Я уже нашел этот вопрос ES6: вызов конструктора класса без нового ключевого слова, который требует обратного, и увидел в одном ответе упоминание Proxy
объект. Это звучит как возможный путь, но из документов я не совсем уверен, достижимо ли это.