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 :

[POO] Différentes notations objet


Sujet :

JavaScript

  1. #1
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut [POO] Différentes notations objet
    Salut,

    J'essaie de programmer proprement en Javascript et j'aimerais comprendre les différentes façon de faire de la programmation orientée objet en JS et connaîtres les limites de chacune.
    Par exemple, y a-t-il une différence entre ces deux façon de faire?
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <title>test js</title>
    </head>
    <body>
        <script type="text/javascript">
        function o1(s) {
            this.p1 = s;
        }
        var o3 = {
            p1: "",
            init: function(s) {
                this.p1 = s;
            }
        }
        var t1 = new o1();
        t1.p1 = "test 1";
        var t3 = o3;
        t3.p1 = "test 2";
        alert(t1.p1 + ' - ' + t3.p1);
        </script>
    </body>
    </html>
    Si vous avez directement la réponse ou des sources m'indiquant clairement ce que je souhaite je suis preneur.

    Un grand merci d'avance.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Oui il y a une différence, dans le deuxième cas tu as une seule et unique
    instance (o3) car tu ne passe pas par l'opérateur new

    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
     
    function o1(s) {
    	this.p1 = s;
    }
    var o3 = {
    	p1: "",
    	init: function(s) {
    		this.p1 = s;
    	}
    }
    var t1 = new o1();
    t1.p1 = "test 1";
    var t2 = new o1();
    t2.p1 = "test -";
    var t3 = o3;
    t3.p1 = "test 2";
    var t4 = o3;
    t4.p1 = "test 3"
    alert(t1.p1 + ' - ' + t3.p1);
    Dans ce code on voit que t2.p1 n'est pas la même variable que t1.p1
    par contre t4.p1 et t3.p1 représentent la même variable.

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    l'un te permettra de créer des instances d'objet alors que la 2 eme notation est sous forme json qui représente déja un objet et ne peut donc pas être dupliqué ou instancié :

    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
     
    function test(valeur){
    	this.nom = valeur;
    	this.comment = function(){alert(this.nom);}
    }
    var moi = new test('toto');
    var toi = new test('titi');
     
    moi.comment();
    toi.comment();
     
    var retest = {
            "nom" : "",
            "init": function(valeur) {
                this.nom = valeur;
            }
    	  ,
    	  "comment":function(){alert(this.nom);}
        }
    var moi = retest;
    moi.init('encore toto');
    var toi = retest;
    toi.init('encore titi');
     
    moi.comment();
    toi.comment();

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Ah oui ça me revient, je me souviens avoir lu ça quelque part.

    Merci à vous deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  2. [POO] detecter un objet créé dynamiquement ...
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/10/2005, 12h02
  3. [POO] Désactiver un objet dont le nom est passé en parametre
    Par JavaEli dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/07/2005, 08h47
  4. [POO] fonction toUpperCase : Objet attendu
    Par LineLe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2005, 16h51
  5. [POO] Passer un objet HTML en argument.
    Par defacta dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2004, 10h44

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