Comment 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
}
Vous devez vous connecter pour publier un commentaire.
Objets en AS3 ont la
hasOwnProperty
méthode qui prend un argument de type chaîne et renvoietrue
si l'objet a une propriété définie.readable
est défini danschild
s'prototype au lieu de l'instance elle-même, puishasOwnProperty
sera de retourfalse
(par exempledocument.hasOwnProperty('getElementById') === false
tout('getElementById' in document) === true
)L'ajout de ce qu'elle est un haut de réponse dans Google.
Si vous essayez de vérifier si une constante existe à l'aide d'une chaîne de caractères pour le nom, puis utiliser
Essayer quelque chose comme cela:
var a:Object = {a:'1'}
Réponse à @Vishwas G (pas de commentaire parce que les blocs de code ne sont pas pris en charge dans les commentaires):
Comme Daniel l'a souligné, si l'objet "a" dans votre exemple n'existe pas, en premier lieu, votre tentative d'accès à "b" à "a" va provoquer une erreur. Ce qui se passe dans le cas où vous vous attendez à une structure profonde, comme un objet JSON qui pourraient, par exemple, ont le format de contenu".social.avatar". Si le "social" n'existe pas, alors tenter d'accéder à des "du contenu.social.avatar" va provoquer une erreur.
Voici un exemple de cas d'une profonde de la structure de propriété-test d'existence où le "undefined" approche peut entraîner une erreur dans les cas où le "hasOwnProperty()" approche n'est pas d':
Maintenant les tests...
Noter que ActionScript du frère du langage JavaScript ne serait pas générer une erreur dans le test1 exemple. Toutefois, si vous étendez la hiérarchie des objets d'un niveau supplémentaire, vous tomber dans les erreurs de JavaScript aussi: