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 :

recherche complément d'info sur instanceof


Sujet :

JavaScript

  1. #1
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut recherche complément d'info sur instanceof
    je viens de découvrir un opérateur javascript mais j'ai encore un peu de mal à comprendre comment il fonctionne ou alors il n'est pas implémenté correctement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tableau= "ertzer,ter,,ert,ezr,t,ezrt,er,t,ezr,t,er,t,er,t,ret,,ezt,r"
    tableau=tableau.split(',')
    alert(true instanceof Array)
    là pas de problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tableau= true
    alert(true instanceof Boolean)
    là je comprends pas ...
    pareil pour d'autre tel String

    ça marche pour Number ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    le deuxieme parametre ne doit pas etre type primitif (boolean ,entier..) mais un objet.
    ça marche avec String,Array...

    Syntaxe:
    result = objet instanceof class

    Paramètres

    result représente n’importe quelle variable.
    objet représente n’importe quel objet.
    class représente n’importe quelle classe d'objet définie.

  3. #3
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    heu ça n'a pas l'air de marcher avec String ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    elle marche avec string je l'ai essayé sous IE et Firefox.

    nomObjString = new String('blablabla');
    alert(nomObjString instanceof String) --> affiche true.
    alert('blablabla' instanceof String) --> affiche false

  5. #5
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Il faut différenciez typeof et instanceof :

    typeof retourne le type natif de l'objet ("object", "boolean", "number", "string")
    instanceof ne marche dans le cas ou l'objet est de type "object".

    Il faut aussi différencier new String("Str") et "Str".
    En effet, il ne s'agit pas exactement de la même chose... "Str" est un natif, alors que new String est un "object"

  6. #6
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    donc il ne reconnait les objets qu si ils ont été déclarés ...


    var mon string="lkjlkjlkjlkj" n'est donc pas reconnu comme un string ...

    mais alors pourquoi arrive-t-il à reconnaitre un array issu d'un split ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tableau= "ertzer,ter,,ert,ezr,t,ezrt,er,t,ezr,t,er,t,er,t,ret,,ezt,r"
    tableau=tableau.split(',')
    var monstring= tableau.join()
     
    alert(monstring instanceof Object)
     
    alert(tableau instanceof Object)
    curieux non ? objet ou pas objet

    même n edéfinissant tableau comme un new String au départ ...

    il n'y a que si l'on reste sur la varaible tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tableau= new String("ertzer,ter,,ert,ezr,t,ezrt,er,t,ezr,t,er,t,er,t,ret,,ezt,r")
    tableau=tableau.split(',')
    tableau= tableau.join()
     
    alert(tableau instanceof Object)
    et là il reste object ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    instanceof ne gère pas l'héritage...

    instanceof Object ne renvoie true que si l'objet est un objet "de base", et pas si il hérite de Object... je sais c'est mal fait mais bon...

  9. #9
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    il est curieux cet instanceof ....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    du coup, on fait comment pour trouver à tout les coups si c'est un array, string, etc ...?

  11. #11
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    pour l'array y'a pas de problème...
    par contre pour le string il faut que la variable ait été déclarée en new String()
    donc l'intérêt de instanceof se limite aux poissons rouge qui ayant fait le tour du bocal auraient oublié que la varaible est un string ... ou à de rares autres exception ou genre windows[variable] ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    mais du coup on peut pas combiner instanceof et typeof ?
    pour avoir une super fonction qui trouve toujours correctement de quel type est la variable ?

  13. #13
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par Maxoo
    mais du coup on peut pas combiner instanceof et typeof ?
    pour avoir une super fonction qui trouve toujours correctement de quel type est la variable ?
    Si, c'est ce qu'il faut faire...

  14. #14
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    le seul script que j'ai vu sur le web qui faisait ça ressemblait plutot à une usine à gaz pour pas grand chose ... avec une dizaine des fonctions ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    typeof : "string", "boolean", "number", "object"
    si "object": instanceof: String, Array, RegExp, autres

  16. #16
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    à completer ...

    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
    <script type='text/javascript'>
    function Type(quoidoncquesse){
     
    if (! (quoidoncquesse instanceof Object)){
     												return (typeof(quoidoncquesse))
    												}
     
    else {
    		switch (true)  {
    							case (quoidoncquesse instanceof String) : 	return "String";
    																		break;
    							case (quoidoncquesse instanceof Array) : 	return "Array";
    																		break;
    							case (quoidoncquesse instanceof RegExp) : 	return "RegExp";
    																		break;
    							}													
    	}
     
     
     
    }
     
     
    var tester= new String('1254')
     
     
    alert(Type(tester))</script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    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
    function Type(quoidoncquesse)
    {
         if ( !(quoidoncquesse instanceof Object) )
         {
              return (typeof(quoidoncquesse))
         }
         else
         {
              switch (true)
              {
                   case (quoidoncquesse instanceof String) :
                        return "String";
                   break;
     
                   case (quoidoncquesse instanceof Array) :
                        return "Array";
                   break;
     
                   case (quoidoncquesse instanceof RegExp) :
                        return "RegExp";
                   break;
              }
         }
    }
    J'ai réécris la fonction car on ne voyais pas bien sur ton post SpaceFrog

    Par contre je me demande si c'est pareil de faire cela au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         if ( typeof(quoidoncquesse) != "Object" )
         {
              return (typeof(quoidoncquesse))
         }

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

Discussions similaires

  1. [C#]Complément d'infos sur évènements
    Par ClaudeBg dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/03/2010, 12h15
  2. Réponses: 20
    Dernier message: 16/10/2009, 14h29
  3. Complément d'Infos sur les .ini
    Par Fred2209 dans le forum Visual C++
    Réponses: 4
    Dernier message: 27/12/2006, 09h59
  4. Complément d'info sur l'utilisation de settimeout
    Par WhyMee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/08/2006, 13h08
  5. [Vba]recherche infos sur tables
    Par Emcy dans le forum Access
    Réponses: 8
    Dernier message: 09/11/2005, 08h44

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