mozilla
Vos résultats de recherche

    Object.prototype.hasOwnProperty()

    Résumé

    La méthode hasOwnProperty() retourne un booléen indicant si l'objet possède la propriété spécifiée.

    Syntaxe

    obj.hasOwnProperty(prop)

    Paramètres

    prop
    Le nom de la propriété à tester.

    Description

    Chaque objet descendant d'Object hérite de la méthode hasOwnProperty. Cette méthode peut être utilisée pour déterminier si un objet a la propriété spécifiée en tant que propriété directe de cet objet. Contrairement à l'opérateur in, cette méthode ne vérifie pas la chaîne des prototypes de l'objet.

    Exemples

    Utiliser hasOwnProperty pour tester l'existence d'une propriété

    L'exemple suivant détermine si l'objet o contient une propriété appelée prop:

    o = new Object();
    o.prop = 'exists';
    
    function changeO() {
      o.newprop = o.prop;
      delete o.prop;
    }
    
    o.hasOwnProperty('prop');   // retourne true
    changeO();
    o.hasOwnProperty('prop');   // retourne false

    Propriétés directes et propriétés héritées

    L'exemple suivant illustre la différence entre les propriétés directes et les propriétés héritées à partir de la chaîne de prototypes :

    o = new Object();
    o.prop = 'exists';
    o.hasOwnProperty('prop');             // retourne true
    o.hasOwnProperty('toString');         // retourne false
    o.hasOwnProperty('hasOwnProperty');   // retourne false

    Parcourir les propriétés d'un objet

    L'exemple suivant montre comment parcourir les propriétés d'un objet sans traiter les propriétés héritées. On notera que la boucle  for...in ne prend en compte que les éléments énumérables. Il ne faut donc pas déduire de l'absence de propriétés non-énumérables dans la boucle, que hasOwnProperty est elle-même strictement restreinte aux éléments énumérables (comme c'est le cas pour Object.getOwnPropertyNames()) .

    var bidule = {
        truc: 'stack'
    };
    
    for (var nom in bidule) {
        if (bidule.hasOwnProperty(nom)) {
            console.log("C'est bien la propriété (" + nom + "), sa valeur : " + bidule[nom]);
        }
        else {
            console.log(name); // toString ou autre
        }
    }

    hasOwnProperty en tant que propriété

    JavaScript ne protège pas le nom de propriété hasOwnProperty, ainsi il est possible qu'un objet puisse avoir une propriété avec ce nom, il sera donc nécessaire d'utiliser une version externe de la méthode pour obtenir des résultats corrects.

    var toto = {
      hasOwnProperty: function() {
        return false;
      },
      truc: 'Voici les dragons'
    };
    
    toto.hasOwnProperty('truc'); // renvoie toujours false
    
    // On utilise une méthode d'un autre objet 
    // et on l'appelle avec this qui vaut toto 
    ({}).hasOwnProperty.call(toto, 'truc'); // true
    
    // On peut aussi utiliser la propriété hasOwnProperty de Object prototype
    Object.prototype.hasOwnProperty.call(toto, 'bar'); // true
    

    La dernière version utilisée permet de ne pas créer d'objet supplémentaire.

    Spécifications

    Spécification Statut Commentaires
    Troisième édition d'ECMAScript. Standard Définition initiale. Implémentée avec JavaScript 1.5.
    ECMAScript 5.1 (ECMA-262)
    La définition de 'Object.prototype.hasOwnProperty' dans cette spécification.
    Standard  
    ECMAScript 6 (ECMA-262)
    La définition de 'Object.prototype.hasOwnProperty' dans cette spécification.
    Draft  

    Compatibilité des navigateurs

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

    Voir aussi

    Étiquettes et contributeurs liés au document

    Contributors to this page: N.greff, SphinxKnight, bgondy, teoli
    Dernière mise à jour par : bgondy,