package{ import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var Si:DSprite=new DSprite(); Si.p1=true; Si.p0="yes"; Si.p2=4; for(var p:String in Si){trace(p);} } } }
package{ import flash.display.Sprite; dynamic class DSprite extends Sprite{ static var obj:Object; public function get obj():*{return obj;} public function set obj(value:*):void{obj=value;} } }
propertyIsEnumerable
[...]
Indique si la propriété spécifiée existe et est énumérable. Si la valeur est true, la propriété existe et peut être énumérée dans une boucle for..in. La propriété doit exister au niveau de l’objet cible dans la mesure où cette méthode ne vérifie pas la chaîne de prototype de l’objet cible.
Les propriétés que vous créez sont énumérables, contrairement aux propriétés intégrées qui ne le sont généralement pas.
hasOwnProperty(name:String):Boolean
Indique si la propriété spécifiée d’un objet est définie. Cette méthode renvoie true si l’objet cible comporte une propriété qui correspond à la chaîne spécifiée par le paramètre name et false dans les autres cas. Les types de propriétés suivants forcent la méthode à renvoyer la valeur true pour les objets qui sont des occurrences de classe, plutôt que des objets de classe :
Propriétés d’occurrence fixes : variables, constantes ou méthodes définies par la classe de l’objet qui ne sont pas statiques.
Propriétés d’occurrence fixes héritées : variables, constantes ou méthodes héritées par la classe de l’objet.
Propriétés dynamiques : propriétés ajoutées à un objet après son instanciation (hors de la définition de classe). Pour ajouter des propriétés dynamiques, la classe de définition de l’objet doit être déclarée avec le mot-clé dynamic.
Les types de propriétés suivants forcent la méthode à renvoyer la valeur false pour les objets qui sont des occurrences de classe :
Propriétés statiques : variables, constantes ou méthodes définies avec le mot-clé statique dans la classe de définition d’un objet ou dans l’une de ses super-classes.
Propriétés de prototype : propriétés définies pour un objet prototype appartenant à la chaîne de prototype de l’objet. Dans ActionScript 3.0, la chaîne de prototype n’est pas utilisée pour l’héritage de classe, mais demeure une autre forme d’héritage valide. Par exemple, une occurrence de la classe Array peut accéder à la méthode valueOf() parce qu’elle est associée à Object.prototype, qui fait partie de la chaîne de prototype de la classe Array. Bien que vous puissiez utiliser valueOf() sur une occurrence d’Array, la valeur renvoyée par hasOwnProperty("valueOf") pour cette occurrence correspond à false.
var toto:MovieClip = new MovieClip()
toto.prop = 25;
package{ import flash.display.MovieClip; import flash.utils.getQualifiedClassName; public class Main extends MovieClip{ public function Main(){ var r0:int; var So:MovieClip=new MovieClip(); So.po="salut"; So.x=20; trace(So.propertyIsEnumerable("x"));//false trace(So.hasOwnProperty("x"));//true trace("x" in So);//true trace("///////////////////////////////////////////////////"); trace(So);//20 trace(So);//0 trace(So);//salut trace(So);//undefined trace("///////////////////////////////////////////////////"); trace(typeof(So.x));//number trace(getQualifiedClassName(So.x));//int trace(typeof(So.po));//string ??? sans majuscule trace(getQualifiedClassName(So.po));//String if(So.y==r0){trace("perdu");}//perdu } } }
function isOriginalProperty(str:String):Boolean { return customClass.hasHownProperty(str) && !extendedClass.hasHownProperty(str); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question" Les propriétés que vous créez sont énumérables, contrairement aux propriétés intégrées qui ne le sont généralement pas."
function isOriginalProperty(str:String):Boolean { return customClass.hasHownProperty(str) && !extendedClass.hasHownProperty(str); }
function isOriginalProperty(str:String):Boolean { return customClass.hasHownProperty(str) && customClass.propertyIsEnumerable(str); }
package{ import flash.display.Sprite; public class DSprite extends Sprite{ private var _p0:*; private var _p1:*; public function get p0():*{return _p0;} public function set p0(value:*):void{_p0=value;} public function get p1():*{return _p1;} public function set p1(value:*):void{_p1=value;} } }
package{ import flash.utils.describeType; public class Main extends MovieClip{ public function Main(){ var Si:DSprite=new DSprite(); Si.p0="yes"; Si.p1=true; var description:XML = describeType(Si); trace(description..accessor.@name.toXMLString()); } } }