| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
new et vous pouvez leur affecter des propriétés de façon dynamique. Vous pouvez également créer des objets en affectant un littéral d’objet, comme suit :
var obj:Object = {a:"foo", b:"bar"}Toutes les classes qui ne déclarent pas de classe de base explicite étendent la classe Object intégrée.
Vous pouvez utiliser la classe Object pour créer des associative arrays. Sous sa forme de base, un tableau associatif est une occurrence de la classe Object et chaque paire clé/valeur est représentée par une propriété et sa valeur. Vous pouvez également déclarer un tableau associatif à l'aide du type de données Object pour la raison suivante : cela vous permet d'utiliser ensuite un littéral d'objet pour alimenter votre tableau associatif (uniquement au moment de la déclaration). L'exemple suivant crée un tableau associatif à l'aide d'un littéral d'objet, accède aux éléments à l'aide de l'opérateur point et d'accès au tableau, puis ajoute une nouvelle paire clé/valeur en créant une nouvelle propriété :
var myAssocArray:Object = {fname:"John", lname:"Public"};
trace(myAssocArray.fname); // John
trace(myAssocArray["lname"]); // Public
myAssocArray.initial = "Q";
trace(myAssocArray.initial); // QActionScript 3.0 dispose de deux types d'héritage : par classe et par prototype :
L'héritage de classe et l'héritage de prototype peuvent coexister, comme illustré dans l'exemple suivant :
class A {
var x = 1
prototype.px = 2
}
dynamic class B extends A {
var y = 3
prototype.py = 4
}
var b = new B()
b.x // 1 via class inheritance
b.px // 2 via prototype inheritance from A.prototype
b.y // 3
b.py // 4 via prototype inheritance from B.prototype
B.prototype.px = 5
b.px // now 5 because B.prototype hides A.prototype
b.px = 6
b.px // now 6 because b hides B.prototypeSi vous utilisez des fonctions au lieu de classes, vous pouvez générer des arborescences d'héritage de prototype personnalisées. Avec les classes, l'arborescence d'héritage de prototype reflète à l'identique l'arborescence d'héritage de classe. Cependant, les objets prototype étant dynamiques, vous pouvez ajouter et supprimer des propriétés associées aux prototypes lors de l'exécution.
Voir aussi
| Propriété | Défini par | ||
|---|---|---|---|
| constructor : Object Référence à l'objet de classe ou à la fonction constructeur d'une occurrence donnée d'un objet. | Object | ||
| prototype : Object [statique] Référence à l'objet prototype d'un objet de classe ou fonction. | Object | ||
| Méthode | Défini par | ||
|---|---|---|---|
Object() Crée un objet Object et stocke une référence à la méthode constructeur de l'objet dans la propriété constructor de ce dernier. | Object | ||
Indique si la propriété spécifiée d'un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l'objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d'une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation sous forme de chaîne de l'objet spécifié. | Object | ||
Renvoie la valeur primitive de l'objet spécifié. | Object | ||
| constructor | propriété |
public var constructor:Object| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
Référence à l'objet de classe ou à la fonction constructeur d'une occurrence donnée d'un objet. Si un objet est une occurrence de classe, la propriété constructor contient une référence à l'objet de classe. Si un objet est créé par le biais d'une fonction constructeur, la propriété constructor contient une référence à la fonction constructeur. Ne confondez pas une fonction constructeur avec une méthode constructeur de classe. Une fonction constructeur est un objet Function permettant de créer des objets et peut être utilisée au lieu du mot clé class pour définir des classes.
Si vous utilisez le mot clé class pour définir une classe, la propriété constructor, qui contient une référence à l'objet de classe, est affectée à l'objet prototype correspondant. Une occurrence de la classe hérite de cette propriété à partir de l'objet prototype. Le code suivant crée par exemple une classe, A, et une occurrence de classe, myA :
dynamic class A {}
trace(A.prototype.constructor); // [class A]
trace(A.prototype.constructor == A); // true
var myA:A = new A();
trace(myA.constructor == A); // true
Les utilisateurs chevronnés peuvent opter pour le mot clé function au lieu du mot clé class pour définir un objet Function, qui pourra servir de modèle de création d'objet. Ce type de fonction porte le nom de fonction constructeur, car vous pouvez l'utiliser en conjonction avec l'opérateur new pour créer des objets. Si vous utilisez le mot clé function pour créer une fonction constructeur, la propriété constructor, qui contient une référence à la fonction constructeur, est affectée à l'objet prototype correspondant. Si vous utilisez ensuite la fonction constructeur pour créer un objet, celui-ci hérite de la propriété constructor à partir de l'objet prototype de la fonction constructeur. Le code suivant crée par exemple une fonction constructeur, f, et un objet, myF :
function f() {}
trace(f.prototype.constructor); // function Function() {}
trace(f.prototype.constructor == f); // true
var myF = new f();
trace(myF.constructor == f); // true
Remarque : la propriété constructor est accessible en écriture, ce qui signifie que la valeur du code utilisateur peut être modifiée par une instruction d'affectation. Il n'est pas recommandé de modifier la valeur de la propriété constructor, mais si vous rédigez du code affecté par la valeur de la propriété constructor, assurez-vous que la valeur n'est pas réinitialisée. La valeur ne peut être modifiée que lors d'un accès à la propriété par le biais de l'objet prototype (className.prototype.constructor, par exemple ).
Voir aussi
| prototype | propriété |
public static var prototype:Object| Version du langage: | ActionScript 3.0 |
| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
Référence à l'objet prototype d'un objet de classe ou fonction. La propriété prototype est créée automatiquement et est liée à tout objet de classe ou fonction que vous créez. Cette propriété est statique dans la mesure où elle est propre à la classe ou la fonction que vous créez. Par exemple, si vous créez une classe, la valeur de la propriété prototype est partagée par toutes les occurrences de la classe et est accessible uniquement en tant que propriété de classe. Les occurrences de votre classe ne peuvent pas accéder directement à la propriété prototype.
L'objet prototype d'une classe est une occurrence spéciale de cette classe, qui propose un mécanisme de partage d'état parmi toutes les occurrences d'une classe. Lors de l’exécution, si une propriété ne figure pas dans une occurrence de classe, elle est recherchée dans le délégué, à savoir l’objet prototype de la classe. Si l’objet prototype ne contient pas la propriété, le processus continue et le délégué de l’objet prototype effectue des recherches dans des niveaux de plus en plus élevés de la hiérarchie jusqu’à ce que Flash Player ou Adobe Integrated Runtime trouve la propriété.
Remarque : dans ActionScript 3.0, l’héritage de prototype ne constitue pas le principal mécanisme d’héritage. Ce rôle incombe à l'héritage de classe, qui assure l'héritage des propriétés fixes dans les définitions de classe.
Voir aussi
| Object | () | Constructeur |
public function Object()
Crée un objet Object et stocke une référence à la méthode constructeur de l'objet dans la propriété constructor de ce dernier.
Voir aussi
| hasOwnProperty | () | méthode |
AS3 function hasOwnProperty(name:String):Boolean| Version du langage: | ActionScript 3.0 |
| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
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 :
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 :
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.
ActionScript 3.0 gère également les objets de classe, qui sont des représentations directes des définitions de classe. Si vous l'appelez sur un objet de classe, la méthode hasOwnProperty() ne renvoie true que si une propriété fait partie des propriétés statiques associées à l'objet de classe. Par exemple, si vous créez une sous-classe d'Array appelée CustomArray et que vous définissez une propriété statique dans CustomArray appelée foo, tout appel de CustomArray.hasOwnProperty("foo") renvoie true. Cependant, pour la propriété statique DESCENDING définie dans la classe Array, un appel de CustomArray.hasOwnProperty("DESCENDING") renvoie false.
Remarque : les méthodes de la classe Object sont créées dynamiquement sur le prototype correspondant. Pour redéfinir cette méthode dans une sous-classe d'Object, n'utilisez pas le mot clé override. Une sous-classe d'Object met par exemple en œuvre function hasOwnProperty():Boolean au lieu d'utiliser un remplacement de la classe de base.
Paramètres
name:String — Propriété de l'objet. |
Boolean —
Renvoie name si l'objet cible comporte la propriété spécifiée par le paramètre true, false dans tous les autres cas.
|
| isPrototypeOf | () | méthode |
AS3 function isPrototypeOf(theClass:Object):Boolean| Version du langage: | ActionScript 3.0 |
| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l'objet spécifié en tant que paramètre. Cette méthode renvoie true si l'objet figure dans le chaînage de prototype de l'objet spécifié par le paramètre theClass. La méthode renvoie false si l'objet cible est absent de la chaîne de prototype de l'objet theClass et si le paramètre theClass n'est pas un objet.
Remarque : les méthodes de la classe Object sont créées dynamiquement sur le prototype correspondant. Pour redéfinir cette méthode dans une sous-classe d'Object, n'utilisez pas le mot clé override. Une sous-classe d'Object met par exemple en œuvre function isPrototypeOf():Boolean au lieu d'utiliser un remplacement de la classe de base.
Paramètres
theClass:Object — Classe à laquelle risque de se référer l'objet spécifié. |
Boolean —
Renvoie true si l'objet figure dans la chaîne de prototype de l'objet spécifié par le paramètre theClass, false dans le cas contraire.
|
| propertyIsEnumerable | () | méthode |
AS3 function propertyIsEnumerable(name:String):Boolean| Version du langage: | ActionScript 3.0 |
| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
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.
Remarque : les méthodes de la classe Object sont créées dynamiquement sur le prototype correspondant. Pour redéfinir cette méthode dans une sous-classe d'Object, n'utilisez pas le mot clé override. Une sous-classe d'Object met par exemple en œuvre function propertyIsEnumerable():Boolean au lieu d'utiliser un remplacement de la classe de base.
Paramètres
name:String — Propriété de l'objet. |
Boolean —
Renvoie true si la propriété spécifiée par le paramètre name est énumérable, false dans le cas contraire.
|
| setPropertyIsEnumerable | () | méthode |
public function setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void| Version du langage: | ActionScript 3.0 |
| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
Définit la disponibilité d'une propriété dynamique pour les opérations en boucle. 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.
Paramètres
name:String — Propriété de l'objet. | |
isEnum:Boolean (default = true) —
Si défini sur false, la propriété dynamique est ignorée dans les boucles for..in et la méthode propertyIsEnumerable() renvoie false.
|
Voir aussi
| toString | () | méthode |
public function toString():String| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
Renvoie la représentation sous forme de chaîne de l'objet spécifié.
Remarque : les méthodes de la classe Object sont créées dynamiquement sur le prototype correspondant. Pour redéfinir cette méthode dans une sous-classe d'Object, n'utilisez pas le mot clé override. Par exemple, une sous-classe d'Object met en œuvre function toString():String au lieu d'utiliser un remplacement de la classe de base.
String — Représentation sous forme de chaîne de l'objet. |
| valueOf | () | méthode |
public function valueOf():Object| Versions du moteur d'exécution: | AIR 1.0 Flash Player 9 |
Renvoie la valeur primitive de l'objet spécifié. Si l'objet n'a pas de valeur primitive, il est lui-même renvoyé.
Remarque : les méthodes de la classe Object sont créées dynamiquement sur le prototype correspondant. Pour redéfinir cette méthode dans une sous-classe d'Object, n'utilisez pas le mot clé override. Une sous-classe d'Object met par exemple en œuvre function valueOf():Object au lieu d'utiliser un remplacement de la classe de base.
Object — Valeur primitive de l'objet ou l'objet lui-même. |
Voir aussi
ObjectExample et Circle pour démontrer la nature dynamique de la classe Object et la façon dont les objets de valeur peuvent être transformés en objets Shape, puis ajoutés à la scène aux coordonnées x/y spécifiées.
L'exemple crée les objets de valeur firstInitObj et secondInitObj. La classe personnalisée Circle accepte l'objet valeur et exécute une boucle sur ce dernier tout en définissant ses propriétés internes correspondantes sur celles qui sont définies dans l'objet de valeur.
package {
import flash.display.Sprite;
public class ObjectExample extends Sprite {
public function ObjectExample() {
var firstInitObj:Object = new Object();
firstInitObj.bgColor = 0xFF0000;
firstInitObj.radius = 25;
firstInitObj.xCenter = 25;
firstInitObj.yCenter = 25;
var firstCircle:Circle = new Circle(firstInitObj);
addChild(firstCircle);
firstCircle.x = 50;
firstCircle.y = 50;
var secondInitObj:Object = {bgColor:0xCCCCCC, radius:50, xCenter:50, yCenter:50};
var secondCircle:Circle = new Circle(secondInitObj);
addChild(secondCircle);
secondCircle.x = 100;
secondCircle.y = 100;
}
}
}
import flash.display.Shape;
class Circle extends Shape {
public var bgColor:Number = 0xFFFFFF;
public var radius:Number = 0;
public var xCenter:Number = 0;
public var yCenter:Number = 0;
public function Circle(initObj:Object) {
for(var i:String in initObj) {
this[i] = initObj[i];
}
draw();
}
public function draw():void {
graphics.beginFill(bgColor);
graphics.drawCircle(xCenter, yCenter, radius);
graphics.endFill();
}
}