2013-06-05 9 views
4

Disons que j'ai une classe avec des propriétés d'un couple:quelle est la différence entre * et l'objet

public class MyClass { 
    public var fooProp:*; 
    public var barProp:Object; 
} 

Quelle est la différence, en pratique, entre ceux-ci? Existe-t-il des types de variables que je peux attribuer plus tard à fooProp que je ne peux pas affecter à barProp?

Répondre

6

Seules les variables non typées peuvent contenir la valeur undefined. Les variables non typées sont des variables qui manquent de toute annotation de type ou utilisent le symbole astérisque * pour l'annotation de type.

From ActionScript data type descriptors:

Dans les versions précédentes d'ActionScript, une variable sans annotation de type a été attribué automatiquement le type de données d'objets. Ce n'est pas plus vrai dans ActionScript 3.0, qui inclut maintenant l'idée d'une variable vraiment non typée . Les variables sans annotation de type sont maintenant considérées comme non typées. Si vous préférez indiquer clairement aux lecteurs de votre code que votre intention est de laisser une variable non typée, vous pouvez utiliser le nouveau symbole astérisque (*) pour l'annotation de type, qui est équivalent à l'omission d'une annotation de type. L'exemple suivant montre deux déclarations équivalentes, les deux qui déclarent une variable non typée:

var x 
var x:* 

seules les variables non typées peuvent contenir la valeur indéfinie. Si vous tentez d'affecter la valeur non définie à une variable qui a un type de données, Flash Player ou Adobe AIR convertira la valeur non définie à la valeur par défaut de ce type de données. Pour les instances du type de données Object, la valeur par défaut est null, ce qui signifie que Flash Player ou Adobe AIR convertira la valeur undefined en null si vous tentez d'affecter non défini à une instance Object.

À titre d'exemple:

var t:* = undefined; 
trace(t); // outputs: undefined 

var t:Object = undefined; 
trace(t); // outputs: null 
Questions connexes