[javascript] Comment vérifier si un objet anonyme a une méthode?



Answers

Vous voulez hasOwnProperty() :

var myObj1 = { 
    prop1: 'no',
    prop2: function () { return false; }
}
var myObj2 = { 
    prop1: 'no'
}

alert(myObj1.hasOwnProperty('prop2')); // returns true
alert(myObj2.hasOwnProperty('prop2')); // returns false

Références: Mozilla , Microsoft , phrogz.net .

Question

Comment puis-je vérifier si un objet anonyme a été créé en tant que tel:

var myObj = { 
              prop1: 'no',
              prop2: function () { return false; }
            }

a en effet un prop2 défini?

prop2 sera toujours défini comme une fonction, mais pour certains objets, il n'est pas requis et ne sera pas défini.

J'ai essayé ce qui a été suggéré ici: Comment déterminer si l'objet JavaScript natif a une propriété / méthode? mais je ne pense pas que cela fonctionne pour des objets anonymes.




3 options

  1. typeof myObj.prop2 === 'function' si le nom de la propriété n'est pas dynamique / généré
  2. myObj.hasOwnProperty('prop2') si le nom de la propriété est dynamique, et vérifiez uniquement s'il s'agit d'une propriété directe (pas en aval de la chaîne du prototype)
  3. 'prop2' in myObj si le nom de la propriété est dynamique, et vérifiez la chaîne du prototype



Links



Tags

javascript javascript