145 votes

Comment cloner un javascript ES6 instance de classe

Comment puis-je cloner une classe Javascript instance à l'aide de ES6.

Je ne suis pas intéressé par des solutions basées sur jquery ou $étendre.

J'ai vu assez vieux débats de l'objet de clonage qui suggèrent que le problème est assez compliqué, mais avec ES6 une solution très simple se présente - je vais mettre ci-dessous et voir si les gens pensent que c'est satisfaisant.

edit: il est suggéré que ma question est un doublon, j'ai vu que la réponse, mais il est de 7 ans et comprend très compliqué réponses à l'aide de pré-ES6 js. Je dis que ma question, ce qui permet pour l'ES6, a de façon spectaculaire la solution la plus simple.

183voto

flori Points 695
let clone = Object.assign( Object.create( Object.getPrototypeOf(orig)), orig)

J'ai essayé beaucoup de choses, en fin de compte cela a fonctionné pour moi.

Il évite également de définir le prototype, car ils disent qu'il ralentit le code beaucoup.

Et c'est un one-liner!

25voto

Tom Points 4834
const clone = Object.assign( {}, instanceOfBlah );
Object.setPrototypeOf( clone, Blah.prototype );

Note les caractéristiques de l' Objet.attribuer: il le fait d'une copie et ne permet pas de copier les méthodes de la classe.

Si vous voulez une copie en profondeur ou plus de contrôle sur la copie puis il y a les lodash clone fonctions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X