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 :

Subtilités dans la syntaxe


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Subtilités dans la syntaxe
    Bonjour pourriez-vous me dire quelle est la différence entre ces deux synthaxes :

    Synthaxe 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var testObjet = function() 
    {
          // On peut mettre ici le constructeur de la classe
        this.toto = function()
        {
            alert('function toto appellé');
        }
        
    }
    // instanciation d'un objet
    var _obj = new testObjet()
    // appel d'une méthode
    _obj.toto();
    Synthaxe 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function testObjet () {
          // On peut mettre ici le constructeur de la classe
        this.toto = function()
        {
            alert('function toto appellé');
        }
        
    }
    // instanciation d'un objet
    var _obj = new testObjet()
    // appel d'une méthode
    _obj.toto();
    Voilà. Merci pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Dasn le premier cas tu crées une variable (objet) fonction
    dans le second tu déclares une fonction...

    niveau resultat c'est la même chose ...

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    J'irai plus loin : quelles différences entre les syntaxes 1, 2, 3 et 4 ?

    Syntaxe 3 :
    Code javascript : 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
     
    var testObjet=function(){};
     
    testObjet.prototype=
    {
        toto : function()
        {
            alert('function toto appellée');
        }
    }
     
     
    // instanciation d'un objet
    var _obj = new testObjet()
    // appel d'une méthode
    _obj.toto();

    Syntaxe 4 :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var testObjet=function(){};
     
    testObjet.prototype.toto = function()
        {
            alert('function toto appellée');
        }
     
     
     
    // instanciation d'un objet
    var _obj = new testObjet()
    // appel d'une méthode
    _obj.toto();

  4. #4
    Membre régulier
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 97
    Points
    97
    Par défaut
    Le premier est une écriture JSON.

    La seconde une écriture normale.

    J'ai bon?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    pas forcément ...

  6. #6
    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
    1. on crée un objet à l'aide d'une fonction anonyme. donc objet unique, pas de classe

    2. on crée un objet à l'aide d'une fonction. la fonction ~ d'une classe, on peut instancier X objets de cette classe

    3. comme 1. mais pas la même notation (JSON). et après coup on rajoute une fonction à l'objet instancié. avec cette notation on pourrait rajouter X fonctions ou membres à la suite de toto

    4. comme 3 mais ajout unique de la propriété toto (i.e. on n'a plus l'accolade du 3.)

    En bref, on crée un objet unique sauf en 2 où l'on peut en plus grâce à la fonction nommée créer d'autres objets du même type

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    heu big boom on peut faire des new mafonction() pour déclarer une instance séparée d'une fonction ... donc je ne vois pas de différence ...

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Auteur
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var testObjet=function(){};
    
    testObjet.prototype=
    {
        toto : function()
        {
            alert('function toto appellée');
        }
    }
    Est-ce bien ce "toto" qui est un label au sens JS ?
    (question posée récemment sur le forum : "Qu'est ce qu'un label JS ?")

    A+

  9. #9
    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
    Citation Envoyé par SpaceFrog
    heu big boom on peut faire des new mafonction() pour déclarer une instance séparée d'une fonction ... donc je ne vois pas de différence ...
    j'ai pas dit qu'il y avait une différence. j'ai juste commenté les différents codes et dit que le 2 instancie cash un objet unique puisque la classe (fonction) n'est pas nommée > si on en veut un autre objet il faut repêter le code de la fonction

  10. #10
    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
    Citation Envoyé par E.Bzz
    Est-ce bien ce "toto" qui est un label au sens JS ?
    (question posée récemment sur le forum : "Qu'est ce qu'un label JS ?")

    A+
    uhh j'ai pas suivi la discussion au sujet du label, mais là toto est une propriété de l'objet, et plus précisément une fonction.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par bigboomshakala
    uhh j'ai pas suivi la discussion au sujet du label, mais là toto est une propriété de l'objet, et plus précisément une fonction.
    C'était , et ça correspond : son petit nom JS semble donc bien être "label" ...

    A+

  12. #12
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    non ça n'a aucun rapport avec les labels. Si tu as fait du basic, les labels se rapprochent plus des instructions goto (cf. un exemple ici - ligne 80 qui fait un goto vers la ligne 70 si la condition est vraie).

    Ici, il s'agit de définir des propriétés de l'objet :
    Code javascript : 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
     
    var testObjet=function(){};
     
    testObjet.prototype=
    {
        maVariable : "coucou"
        ,
        setMaVariable : function(valeur)
        {
            this.maVariable = valeur;
        }
        ,
        getMaVariable : function()
        {
          return this.maVariable;
        }
    }
     
     
    // instanciation d'un objet
    var _obj = new testObjet()
    // appel d'une méthode
     
    alert(_obj.getMaVariable());
     
    _obj.setMaVariable("hello");
     
    alert(_obj.getMaVariable());

    chaque propriété est séparée par une virgule.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Merci
    Merci beaucoup pour vos réponses, étant graphiste, l'art de coder m'est un peu étranger, mais je suis entrain de l'apprivoiser, et me lance dans la prog objet.

    Ces explications m'ont permis de lever les doutes que j'avais.

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

Discussions similaires

  1. [JTextPane] Perdue dans la syntaxe et le html
    Par fripette dans le forum Composants
    Réponses: 6
    Dernier message: 21/03/2008, 16h02
  2. Probleme Dans la syntaxe Sql
    Par itri2006 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/07/2007, 12h24
  3. ou est l'erreur dans cette syntaxe svp ?
    Par delavega dans le forum ASP
    Réponses: 2
    Dernier message: 29/05/2007, 13h03
  4. variable dans requete syntaxe
    Par krassi dans le forum Requêtes et SQL.
    Réponses: 18
    Dernier message: 02/03/2007, 16h49
  5. ajout dans liste (syntaxe SQL)
    Par dr_feelgood dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 20/10/2005, 20h05

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