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 :

Passer une Value Array de type objects, a une variable, mais sans heritage ?


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Passer une Value Array de type objects, a une variable, mais sans heritage ?
    Salut a tous et merci pour tous ceux qui pourront m'éclairer.
    Je suis un peu perdu mais aussi en apprentissage.

    Je travail dans le context d'un GameEngine , donc je exploitent quelque DB.js deja operationelle.
    Ma question global porter sur le javascript est la suivante.
    Pourquoi lorsque j'assigne a une variable x, les valeurs d'un objet[] , et que je increment cette variable x[++], mon objet increment aussi ???

    Ma question suis le context suivant que j' ai un peut epurer.
    Ex: Au BOOT du projets je construis avec cette ligne mes objets et sub objets .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $gameSystem.huds = new huds(); // construit les interpreter des huds du jeux, pas le menue
    Le CALL de new huds(); construit et ajoute ceci .... dans $gameSystem.huds

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /*=============================================================================
    * BUILD HUDS INTEGRER (not the menu)
    =============================================================================*/
    // parent from $gameSystem.huds = new HUDS();
    function huds() {
    this.hudsSlot = new hudsSlot();
    }
    //sub from parent
    //-----------------------------------------------------------------------------
    // le huds des itemdice.. hudsSlot -------------------
    function hudsSlot() {
        this.PIDdebug = [15,47]; // static 
    }
    J'usque la, tout va bien.
    Donc si je fais ensuite dans ma console de débogage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log($gameSystem.huds.hudsSlot.PIDdebug); // return me [15,47] .. Ok ces parfait
    Mais le problème est ce qui suit, cette objets doit être statique et permanent.
    Et si je donne cette valeur Array a une variable quelconque et incrémente cette meme variable, l'objets va aussi incrémenter comme si un lien la reliait.!
    ex:
    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
    var MyVar = $gameSystem.huds.hudsSlot.PIDdebug;
    console.log(MyVar); // return [15,47] ... parfait
    console.log($gameSystem.huds.hudsSlot.PIDdebug); // return [15,47] ... parfait
     
    // ensuite si je fait 
    MyVar[0]++;
    // ou 
    MyVar[0]+=1;
     
    console.log(MyVar); // return [16,47] // ... parfait 
    console.log($gameSystem.huds.hudsSlot.PIDdebug); // return [16,47] // ... heu ho non. !!!,
     
    // je voulai incrémenter la variable MyVar, mais pas $gameSystem.huds.hudsSlot.PIDdebug
    // Pourquoi lorsque je increment MyVar 
    // $gameSystem.huds.hudsSlot.PIDdebug increment aussi , je ne veut pas .
    merci pour toute eclaircissement ou suggestion sur ma facon de proceder.
    je pense que je me y prend mal.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var MyVar = $gameSystem.huds.hudsSlot.PIDdebug;
    tu crées un « pointer » sur la propriété de ton objet, le comportement est donc conforme à l'attendu.
    Si tu veux créer une copie il te faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var MyVar = [].concat($gameSystem.huds.hudsSlot.PIDdebug);
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var MyVar = $gameSystem.huds.hudsSlot.PIDdebug.slice();

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    votre réponse me semble très logique je teste cela demain.
    un grand merci pour votre aide mon ami.
    j'ai vraiment de la difficulté a comprendre ces heritage.
    comme expliquer dans d' autre cas , avec des _. certain fonctionne comme je veux (méthode underscore), mais cela doit être une question de prototype et de héritage .

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2011
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    en terme de MS quel fonction est la plus performante selon vous ?

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Pour être plus moderne tu pourrais également faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var MyVar = [...$gameSystem.huds.hudsSlot.PIDdebug];
    Concernant les performances, d'après les quelques JSPerf que j'ai été voir il semblerait que cela soit slice() qui s'en tire le mieux.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/10/2014, 17h46
  2. Réponses: 8
    Dernier message: 03/09/2014, 22h23
  3. Méthode avec un paramètre de type "object" : comment lui passer une List ?
    Par Picsonald dans le forum Windows Communication Foundation
    Réponses: 22
    Dernier message: 19/03/2012, 10h16
  4. [SSIS] variable de type object dans une requete
    Par Huston dans le forum SSIS
    Réponses: 1
    Dernier message: 09/06/2010, 19h13
  5. [AIDE] passer d'une Queue a une Queue Prioritaire
    Par Mikaelv2 dans le forum C++
    Réponses: 9
    Dernier message: 12/08/2007, 23h24

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