La copie d’objets en javascript | Développement Web

La copie d’objets en javascript

Pour la copie d’objets en javascript, l’affectation classique ne suffit pas.

Pour copier un objet et en faire un objet à part entière, il est nécessaire de faire appel à l’opérateur new qui affectera un nouvel espace mémoire à cet objet qui lui assurera son indépendance.

Exemple de copie d’objet en javascript:

function Arbre(txtNom, txtPlantation){
    this.nom= txtNom;
    this.plantation= txtPlantation;
    this.print= showArbre;
}

function showArbre(){
    document.write('< br />Arbre:  '+this.nom+' - Plantation: '+this.plantation);
}

var arbrePomme = new Arbre('pommier','verger');
var arbrePommeCopie = new Arbre(arbrePomme.nom, arbrePomme.plantation);

arbrePomme.print();
arbrePommeCopie.print();

arbrePommeCopie.nom = 'bananier';

arbrePomme.print();
arbrePommeCopie.print();

On constate bien que la modification de la valeur de la prorpiété nom de l’objet copié n’a aucune influence sur celle de l’objet d’origine. Les 2 objets sont donc indépendants, la copie d’objets est réussie.

Afin d’éviter de lister toutes les propriétés d’un objet à chaque copie, il est possible de créer un fonction qui s’occupera de cette opération:

function Arbre(txtNom, txtPlantation){
    this.nom= txtNom;
    this.plantation= txtPlantation;
    this.print= showArbre;
    this.copyObject= copieArbre;
}

function showArbre(){
    document.write('< br />Arbre:  '+this.nom+' - Plantation: '+this.plantation);
}

function copieArbre(objCopie){
    objCopie.nom= this.nom;
    objCopie.plantation= this.plantation;
}
var arbrePomme = new Arbre('pommier','verger');
var arbrePommeCopie = new Arbre();

arbrePomme.copyObject(arbrePommeCopie);

arbrePomme.print();
arbrePommeCopie.print();

arbrePommeCopie.nom = 'bananier';

arbrePomme.print();
arbrePommeCopie.print();