Подтвердить что ты не робот

Как клонировать экземпляр класса ES6 javascript

Как клонировать экземпляр класса Javascript с помощью ES6.

Мне не нужны решения на основе jquery или $extend.

Я видел довольно старые обсуждения клонирования объектов, которые предполагают, что проблема довольно сложная, но с ES6 представлено очень простое решение - я расскажу об этом ниже и посмотрю, считают ли люди, что это удовлетворительно.

edit: предполагается, что мой вопрос является дубликатом; Я видел этот ответ, но ему 7 лет, и он включает очень сложные ответы, используя pre-ES6 js. Я предполагаю, что мой вопрос, который позволяет ES6, имеет значительно более простое решение.

4b9b3361

Ответ 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.