Как клонировать экземпляр класса ES6 javascript
Как клонировать экземпляр класса Javascript с помощью ES6.
Мне не нужны решения на основе jquery или $extend.
Я видел довольно старые обсуждения клонирования объектов, которые предполагают, что проблема довольно сложная, но с ES6 представлено очень простое решение - я расскажу об этом ниже и посмотрю, считают ли люди, что это удовлетворительно.
edit: предполагается, что мой вопрос является дубликатом; Я видел этот ответ, но ему 7 лет, и он включает очень сложные ответы, используя pre-ES6 js. Я предполагаю, что мой вопрос, который позволяет ES6, имеет значительно более простое решение.
Ответы
Ответ 1
let clone = Object.assign( Object.create( Object.getPrototypeOf(orig)), orig)
Я много пробовал, в конце концов это сработало для меня.
Он также избегает установки прототипа, потому что они говорят, это сильно замедляет код.
И это один-лайнер!
Ответ 2
const clone = Object.assign( {}, instanceOfBlah );
Object.setPrototypeOf( clone, Blah.prototype );
Обратите внимание на характеристики Object.assign: он делает мелкую копию и не копирует методы класса.
Если вам нужна глубокая копия или больший контроль над копией, то есть функции клонирования lodash.