28 votes

Comment puis-je tester si une propriété existe sur un objet avant de lire sa valeur?

Je suis de la tentative de lecture d'une propriété sur une série de Sprites. Cette propriété peut ou peut ne pas être présent sur ces objets, et peut même ne pas être déclaré, pire que d'être nulle.

Mon code est:

if (child["readable"] == true){
    // this Sprite is activated for reading
}

Et ainsi de Flash me montre:

Erreur #1069: Propriété sélectionnable pas trouvé sur flash.d'affichage.Sprite et il n'y a pas de valeur par défaut.

Est-il un moyen de tester si une propriété existe avant de lire sa valeur?

Quelque chose comme:

if (child.isProperty("readable") && child["readable"] == true){
    // this Sprite is activated for reading
}

57voto

Greg B Points 6878

Les objets dans AS3 ont la méthode hasOwnProperty qui prend un argument chaîne et renvoie true si l'objet a cette propriété définie.

 if(myObj.hasOwnProperty("someProperty"))
{
    // Do something
}
 

19voto

KennyTM Points 232647
if ("readable" in child) {
  ...

1voto

SystemicPlural Points 1136

Ajouter ceci car c'est une réponse de premier plan dans Google.

Si vous essayez de vérifier si une constante existe en utilisant une chaîne pour le nom, utilisez

 if (ClassName["ConstName"] !== undefined) {
    ...
}
 

0voto

smartali89 Points 148

Essayez quelque chose comme ceci:

 if (child["readable"] != null){

}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X