IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Héritage prototypal en Javascript


Sujet :

JavaScript

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut Héritage prototypal en Javascript
    Bonjour à tous,

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    //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.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    var table_temp = [ "a", "b", "c", "d", "e", "f", "g", "h" ];
    var table_temp_length = table_temp.length;
    var relationsObj = {};
    var nouvelle_table = [];
     
    for ( var i = 0; i < table_temp_length; i++ ){
      var str = table_temp[i];
     
      relationsObj[str] = {
        "etat" : 0,
        "relations" : table_temp[str],
        "swith" : function( number ){
          this.etat = number;
        }
      };
    }
     
    for ( var k = 0; k < 10; k++ ){
      var Obj = {}; // clone de relationsObj
     
      // relationsObj est un objet contenant des objets
      for ( var i = 0; i < table_temp_length; i++ ){
        var str = table_temp[i];
        Obj[str] = Object.create( relationsObj[str] );
        Obj[str].swith(1);
      }
     
      nouvelle_table.push( Obj );
    }
     
    relationsObj["b"].swith(6);
    nouvelle_table[4]["b"].swith(25);
     
    console.log( "relationsObj : ", relationsObj );
    console.log( "nouvelle_table : ", nouvelle_table );

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut
    Merci beaucoup.

    Niveau perfs c'est déjà mieux, même si malheureusement cela m'oblige toujours à re-faire une boucle.

Discussions similaires

  1. Héritage d'évènement javascript
    Par V1ce37 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/03/2015, 20h48
  2. Balise OBJECT et héritage (css/javascript)
    Par Dionyzos dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/04/2007, 11h08
  3. Problème Héritage JavaScript
    Par Flavien dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/07/2006, 13h29
  4. Un pseudo héritage en javascript
    Par sekaijin dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/07/2006, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo