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 :

Object Oriented Javascript


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut Object Oriented Javascript
    Bonjour tout le monde,

    J'ai une petite question sur l'utilisation des objets dans Javascript, il y a plusieurs méthodes mais je ne sais plus qui est le plus utilisé et pour quelle raison, j'avoue que je suis confus, je donnerai quelque exemples :

    Méthode 1 : créer un Object comme ça :
    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
     
        var Naruto = {
            this.userName : "default",
            changeName : function(name){
                this.userName = name;    
            },
            showNarutoUser : function(){
                alert('bonjour '+this.userName);
            }
        }
     
        // initialization de l'objet:
     
        Naruto.changeName("Stitox");
        Naruto.showNarutoUser ();
     
        // on peut aussi je pense rajouter d'autres fonctions comme ça 
     
        Naruto.prototype.sayHello = function(){
            alert('hello');
        }
    Méthode 2 : créer un Object comme ça :

    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
     
     
    function Naruto(name){
        this.userName = name;
        this.changeName = function(newName){
            this.userName = newName;
        },
        this.showNarutoUser = function(){
            alert('bonjour '+this.userName);
        } 
    }
     
     // initialization de l'objet:
     
    var graf = new Naruto('Stitox');
        graf.changeName('El garch');
        graf.showNarutoUser();
     
    // Rajout du prototype 
     
          Naruto.prototype.sayHello = function(){
            alert('hello');
        }
        graf.sayHello ();


    Quelle méthode utilisez vous souvent, je ne maitraise pas encore très bien Javascript, surtout les objets, prototypes, et concrètement je ne sais plus quand profiter de tout ça, si vous avez quelque chose à me recommander, des liens utiles, je serai très reconnaissant.

    P.S : je suis bien habituer avec jQuery, d'après les projets d'intégration sur qui j'ai travaillé, je sens que mon niveau est pas du tout mauvais


    Merci beaucoup par Avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    C'est un vaste sujet sur lequel il est quasiment impossible de faire une réponse complète.
    Pour faire concis, l'un est un objet littéral, l'autre utilise une fonction constructeur.

    J'ai tendance à utiliser plus souvent la seconde forme, mais ce n'est qu'une préférence personnelle.
    La seconde forme est aussi celle que tu préfèrera si tu dois faire plusieurs instances de ton objet.

    Il existe de nombreuses et subtiles différence entre ces deux formes, et il est assez dur de trouver de bons articles (y compris sur développez.com) couvrant réellement le sujet.

    Personnellement je te conseillerait de potasser "Javascript Patterns" de Stoyan Stefanov qui est à ce jour la source d'information la plus complète et la plus compréhensible (ce qui est important car des articles ambigus je peux t'en sortir à la pelle) que j'ai trouvé sur ce sujet.
    De plus ce livre à l'avantage d'être assez concis (torché en deux ou trois sessions de lecture) et d'aller droit au but : ce qui est vachement appréciable... mon temps est précieux et avoir 400 pages d'introduction sur les notions basiques dans chaque bouquin c'est assez lourd au bout d'un moment.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Merci TheGwy pour tes explications, je vais lire "Javascript Patterns" de Stoyan Stefanov, espérant trouver des réponses à ce sujet.

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    salut,

    crée un objet Naruto unique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Naruto(name){ ... }
     
    var v1 = new Naruto(...);
    var v2 = new Naruto(...);
    crée deux objets v1 et v2 de type Naruto

    dans le 1er cas Naruto est un objet unique, dans le 2è cas c'est une fonction (une pseudo-classe) qui te permet de créer des objets

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Merci bigboomshakala,

    C'est clair maintenant, j'utiliserai donc la première solution dans le cas ou je veux créer un seul Objet, et la 2ème pour créer plusieurs instances.

  6. #6
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par stitox Voir le message
    Merci bigboomshakala,

    C'est clair maintenant, j'utiliserai donc la première solution dans le cas ou je veux créer un seul Objet, et la 2ème pour créer plusieurs instances.
    bien résumé.

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    la première solution est est la méthode naturelle de création d'un objet ce que les autre langage font au travers de la création d'une classe implémentant le design pattern "Singleton"
    soit donc un objet unique.

    dans la solution suivante tu crée un prototype ce qui s'apparente à un constructeur dans un langage à base de classe. puis tu crée une ou plusieurs instances.

    A+JYT

Discussions similaires

  1. programmer en object orienté en JS la différence entre deux méthodes ?
    Par nicko_73 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/11/2009, 13h24
  2. Object Oriented database
    Par goplay dans le forum Oracle
    Réponses: 0
    Dernier message: 13/01/2009, 22h34
  3. transtypage object en javascript
    Par monphp dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/05/2007, 10h51

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