| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
new e le proprietà possono essere assegnate loro dinamicamente. Gli oggetti possono essere creati anche assegnando un valore letterale di Object. Ad esempio:
var obj:Object = {a:"foo", b:"bar"}Tutte le classi che non dichiarano una classe base esplicita estendono la classe Object incorporata.
È possibile utilizzare la classe Object per creare array associativi. Un array associativo è un'istanza della classe Object e ciascuna coppia chiave-valore è rappresentata da una proprietà e dal relativo valore. Un altro motivo per dichiarare un array associativo usando il tipo di dati Object consiste nel fatto che è possibile utilizzare un valore letterale di oggetto per compilare un array associativo (ma solo nel momento in cui viene dichiarato). L'esempio seguente crea un array associativo mediante un valore letterale di oggetto, accede agli elementi sia mediante l'operatore dot sia mediante l'operatore di accesso agli array, quindi aggiunge una nuova coppia chiave-valore mediante la creazione di una nuova proprietà:
var myAssocArray:Object = {fname:"John", lname:"Public"};
trace(myAssocArray.fname); // Output: John
trace(myAssocArray["lname"]); // Output: Public
myAssocArray.initial = "Q";
trace(myAssocArray.initial); // Output: QActionScript 3.0 ha due tipi di ereditarietà: quella di classe e quella di prototipo.
Entrambi i tipi di ereditarietà possono esistere contemporaneamente, come mostrato nell'esempio seguente:
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.prototypeSe si utilizzano le funzioni anziché le classi, è possibile creare delle strutture di ereditarietà di prototipo personalizzate. Con le classi, la struttura di ereditarietà di prototipo rispecchia la struttura di ereditarietà di classe. Tuttavia, dal momento che gli oggetti prototipo sono dinamici, è possibile aggiungere ed eliminare le proprietà basate su prototipo in fase di runtime.
Vedere anche
| Proprietà | Definito da | ||
|---|---|---|---|
| constructor: Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto.
| Object | ||
| prototype: Object
[statico]
Un riferimento all'oggetto prototipo di un oggetto classe o funzione.
| Object | ||
| Metodo | Definito da | ||
|---|---|---|---|
|
Object()
Crea un oggetto Object e memorizza un riferimento al metodo della funzione di costruzione dell'oggetto nella proprietà constructor dell'oggetto.
| Object | ||
|
Indica se per un oggetto è definita una proprietà specifica.
| Object | ||
|
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro.
| Object | ||
|
Indica se la proprietà specificata esiste ed è enumerabile.
| Object | ||
|
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche.
| Object | ||
|
Restituisce la rappresentazione in formato stringa dell'oggetto specificato.
| Object | ||
|
Restituisce il valore di base dell'oggetto specificato.
| Object | ||
| constructor | proprietà |
public var constructor:Object
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. Se un oggetto è un'istanza di una classe, la proprietà constructor contiene un riferimento all'oggetto classe. Se un oggetto viene creato con una funzione di costruzione, la proprietà constructor contiene un riferimento alla funzione di costruzione. Non confondere le funzioni di costruzione con i metodi di costruzione di una classe. Una funzione di costruzione è un oggetto Function utilizzato per creare oggetti ed è alternativo all'utilizzo della parola chiave class per la definizione delle classi.
Se si utilizza la parola chiave class per definire una classe, all'oggetto prototipo della classe viene assegnata una proprietà di nome constructor che contiene un riferimento all'oggetto classe. Un'istanza della classe eredita questa proprietà dall'oggetto prototipo. Ad esempio, il codice seguente crea una nuova classe, A, e un'istanza di classe di nome 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); // trueGli utenti più esperti possono decidere di utilizzare la parola chiave function anziché la parola chiave class per definire un oggetto Function utilizzabile come modello per la creazione degli oggetti. Una funzione di questo tipo viene definita funzione di costruzione perché può essere utilizzata in combinazione con l'operatore new per creare gli oggetti. Se si utilizza la parola chiave function per creare una funzione di costruzione, all'oggetto prototipo della classe viene assegnata una proprietà di nome constructor che contiene un riferimento alla funzione di costruzione. Se quindi si utilizza la funzione di costruzione per creare un oggetto, l'oggetto eredita la proprietà constructor dall'oggetto prototipo della funzione di costruzione. Ad esempio, il codice seguente crea una nuova funzione di costruzione, f, e un oggetto di nome myF:
function f() {}
trace(f.prototype.constructor); // function Function() {}
trace(f.prototype.constructor == f); // true
var myF = new f();
trace(myF.constructor == f); // trueNota: la proprietà constructor è scrivibile, cioè il codice utente può modificare il valore con un'istruzione di assegnazione. Non è consigliabile modificare il valore della proprietà constructor, tuttavia se si scrive del codice che dipende dal valore della proprietà constructor, è necessario assicurarsi che il valore non venga reimpostato. Il valore può essere modificato solo quando si accede alla proprietà attraverso l'oggetto prototipo (ad esempio, className.prototype.constructor).
Vedere anche
| prototype | proprietà |
public static var prototype:Object
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Un riferimento all'oggetto prototipo di un oggetto classe o funzione. La proprietà prototype viene creata automaticamente e associata a qualsiasi oggetto classe o funzione creato. Questa proprietà è di tipo statico ed è specifica della classe o della funzione creata. Se, ad esempio, si crea una classe, il valore della proprietà prototype viene condiviso da tutte le istanze della classe ed è accessibile solo come proprietà della classe. Le istanze della classe non possono accedere direttamente alla proprietà prototype.
L'oggetto prototipo di una classe è un'istanza speciale di tale classe che fornisce un meccanismo per condividere lo stato tra tutte le istanze di una classe. In fase di runtime, quando una proprietà non viene trovata in un'istanza di classe, la proprietà viene cercata nel delegato, cioè nell'oggetto prototipo della classe. Se l'oggetto prototipo non contiene la proprietà, il processo continua con la ricerca del delegato dell'oggetto prototipo in livelli sempre più elevati della gerarchia fino a quando Flash Player non trova la proprietà.
Nota: in ActionScript 3.0, l'ereditarietà di prototipo non è il meccanismo di ereditarietà principale. L'ereditarietà di classe, che comanda l'ereditarietà delle proprietà fisse nelle definizioni di classe, è il meccanismo di ereditarietà principale in ActionScript 3.0.
Vedere anche
| Object | () | Funzione di costruzione |
public function Object()
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Crea un oggetto Object e memorizza un riferimento al metodo della funzione di costruzione dell'oggetto nella proprietà constructor dell'oggetto.
Vedere anche
| hasOwnProperty | () | metodo |
AS3 function hasOwnProperty(name:String):Boolean
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Indica se per un oggetto è definita una proprietà specifica. Questo metodo restituisce true se all'oggetto target è associata una proprietà che corrisponde alla stringa specificata dal parametro name; false in caso contrario. I seguenti tipi di proprietà fanno in modo che questo metodo restituisca true per gli oggetti che sono istanze di una classe (diversamente dagli oggetti classe):
dynamic.I seguenti tipi di proprietà fanno in modo che questo metodo restituisca false per gli oggetti che sono istanze di una classe:
valueOf() perché esiste su Object.prototype, che fa parte della catena di prototipi della classe Array. Anche se è possibile utilizzare valueOf() su un'istanza Array, il valore restituito da hasOwnProperty("valueOf") per tale istanza è false.ActionScript 3.0 ha anche degli oggetti classe che sono delle rappresentazioni dirette delle definizioni di classe. Quando viene chiamato sugli oggetti classe, il metodo hasOwnProperty() restituisce true solo se una proprietà è una proprietà statica definita in tale oggetto classe. Ad esempio, se si crea una sottoclasse di Array di nome CustomArray e si definisce una proprietà statica in CustomArray di nome foo, una chiamata a CustomArray.hasOwnProperty("foo") restituisce true. Tuttavia, per la proprietà statica DESCENDING definita nella classe Array, una chiamata a CustomArray.hasOwnProperty("DESCENDING") restituisce false.
Nota: i metodi della classe Object vengono creati dinamicamente sul prototipo di Object. Per ridefinire questo metodo in una sottoclasse di Object, non utilizzare la parola chiave override. Ad esempio, una sottoclasse di Object implementa function hasOwnProperty():Boolean anziché utilizzare un override della classe base.
Parametri
name:String — La proprietà dell'oggetto.
|
Boolean — Se all'oggetto target è associata la proprietà specificata dal parametro name, il valore è true, in caso contrario è false.
|
| isPrototypeOf | () | metodo |
AS3 function isPrototypeOf(theClass:Object):Boolean
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. Il metodo restituisce true se l'oggetto si trova nella catena di prototipi dell'oggetto specificato dal parametro theClass. Il metodo restituisce false non solo se l'oggetto target è assente dalla catena di prototipi dell'oggetto theClass, ma anche se il parametro theClass non è un oggetto.
Nota: i metodi della classe Object vengono creati dinamicamente sul prototipo di Object. Per ridefinire questo metodo in una sottoclasse di Object, non utilizzare la parola chiave override. Ad esempio, una sottoclasse di Object implementa function isPrototypeOf():Boolean anziché utilizzare un override della classe base.
Parametri
theClass:Object — La classe a cui può fare riferimento l'oggetto specificato.
|
Boolean — Se l'oggetto si trova nella catena di prototipi dell'oggetto specificato dal parametro theClass, il valore è true; in caso contrario è false.
|
| propertyIsEnumerable | () | metodo |
AS3 function propertyIsEnumerable(name:String):Boolean
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Indica se la proprietà specificata esiste ed è enumerabile. Se true, la proprietà esiste e può essere enumerata in un ciclo for..in. La proprietà deve esistere nell'oggetto target, poiché questo metodo non controlla la catena di prototipi dell'oggetto target.
Le proprietà create dall'utente sono enumerabili, mentre le proprietà incorporate, in genere, non lo sono.
Nota: i metodi della classe Object vengono creati dinamicamente sul prototipo di Object. Per ridefinire questo metodo in una sottoclasse di Object, non utilizzare la parola chiave override. Ad esempio, una sottoclasse di Object implementa function propertyIsEnumerable():Boolean anziché utilizzare un override della classe base.
Parametri
name:String — La proprietà dell'oggetto.
|
Boolean — Se la proprietà specificata dal parametro name è enumerabile, il valore è true; in caso contrario è false.
|
| setPropertyIsEnumerable | () | metodo |
public function setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. La proprietà deve esistere nell'oggetto target, poiché questo metodo non controlla la catena di prototipi dell'oggetto target.
Parametri
name:String — La proprietà dell'oggetto.
|
|
isEnum:Boolean (default = true) — Se impostata su false, la proprietà dinamica non viene visualizzata nei cicli for..in e il metodo propertyIsEnumerable() restituisce false.
|
Vedere anche
| toString | () | metodo |
public function toString():String
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Restituisce la rappresentazione in formato stringa dell'oggetto specificato.
Nota: i metodi della classe Object vengono creati dinamicamente sul prototipo di Object. Per ridefinire questo metodo in una sottoclasse di Object, non utilizzare la parola chiave override. Ad esempio, una sottoclasse di Object implementa function toString():String anziché utilizzare un override della classe base.
String — La rappresentazione in formato stringa dell'oggetto.
|
| valueOf | () | metodo |
public function valueOf():Object
| Versione linguaggio: | ActionScript 3.0 |
| Versione lettore: | Flash Player 9 |
Restituisce il valore di base dell'oggetto specificato. Se l'oggetto non ha un valore di base, viene restituito l'oggetto stesso.
Nota: i metodi della classe Object vengono creati dinamicamente sul prototipo di Object. Per ridefinire questo metodo in una sottoclasse di Object, non utilizzare la parola chiave override. Ad esempio, una sottoclasse di Object implementa function valueOf():Object anziché utilizzare un override della classe base.
Object — Il valore di base dell'oggetto o l'oggetto stesso.
|
Vedere anche
ObjectExample e Circle per dimostrare la natura dinamica della classe Object e come sia possibile trasformare gli oggetti valore in oggetti Shape e quindi aggiungerli nello stage in corrispondenza delle coordinate x/y specificate.
L'esempio crea gli oggetti valore firstInitObj e secondInitObj. La classe personalizzata Circle accetta l'oggetto valore, ne esegue elaborazioni cicliche e ne imposta le proprietà interne su quelle definite nell'oggetto valore.
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();
}
}
Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti
Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/ActionScriptLangRefV3/Object.html