Bonjour à tous,

Voici mon code:

//table_temp est un tableau
var relationsObj = {};

//création de mon objet relationsObj (qui deviendra le constructeur)
for(var variable in table_temp) {
    relationsObj[variable] = {
        etat: 0,
        relations: table_temp[variable],
        swith: function(number) {
            this.etat = number;
        }
    };
}

for(var i = 0; i < /*peu importe*/; i++) {

    var nouvelle_table = Object.create(relationsObj);

    //Bloc que j'aimerai bien pourvoir me passer
    for(var k = 0; k < relationsObj_length; k++) {
        nouvelle_table[k].swith(0);
    }

    //Puis traitement qui passe tous les états à 1
}

Pour récapituler:

  • Je créé un objet "relationsObj" qui pour chaque entrée aura la propriété "etat = 0".

  • Puis dans une boucle je créé une instance de cet objet sur laquelle je passerai toutes les propriétés "etat" à 1.

Normalement cela ne devrait pas modifier l'état du parent "relationsObj".
Seulement je suis obligé d'utiliser le "Bloc que j'aimerai bien pourvoir me passer" pour réinitialiser les valeurs à chaque itération.

Ma question est la suivante, comment me séparer ce fameux bloc (sachant que dans mon programme je passe des milliers de fois dans la boucle et que ce dernier est très gourmand niveau perfs, tests à l'appui) ?

Merci d'avance,

Ps: Excusez moi pour la terminologie qui n'est peut-être pas bonne.

3 réponses


Jbz797
Auteur
Réponse acceptée

La solution etait la suivante:

//table_temp est un tableau
var relationsObj = {};

//création de mon objet relationsObj (qui deviendra le constructeur)
for(var variable in table_temp) {
    relationsObj[variable] = {
        etat: 0,
        relations: table_temp[variable],
        swith: function(number) {
            this.etat = number;
        }
    };
}

for(var i = 0; i < /*peu importe*/; i++) {

    var nouvelle_table = table_temp;

    for(var k = 0; k < relationsObj_length; k++) {
        nouvelle_table[k] = Object.create(relationsObj[k]);
    }
}

Est ce que tu utilises ton script pour du client ou du serveur ?
Si c'est pour Nodejs, il est compatible avec les norme ECMA6, donc plus besoin de s'embéter avec les prototypes, la nouvelle syntaxe est limpide.

Jbz797
Auteur

Je suis côté client. Mais c'est pas déjà la nouvelle syntaxe que j'utilise?