Pacchetto | Primo livello |
Classe | public final class Function |
Ereditarietà | Function Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
I metodi di una classe sono leggermente diversi dagli oggetti Function. A differenza di un normale oggetto Function, un metodo è strettamente collegato al proprio oggetto classe associato. Pertanto, un metodo o una proprietà ha un definizione che è condivisa tra tutte le istanze della stessa classe. I metodi possono essere estratti da un'istanza e trattati come metodi "vincolati" (mantenendo il collegamento all'istanza originale). Per un metodo vincolato, la parola chiave this
punta all'oggetto originale che ha implementato il metodo. Per una funzione, this
punta all'oggetto associato al momento in cui viene richiamata la funzione.
Metodo | Definito da | ||
---|---|---|---|
Specifica il valore di thisObject da utilizzare all'interno delle funzioni chiamate da ActionScript. | Function | ||
Richiama la funzione rappresentata da un oggetto Function. | Function | ||
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 di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | ||
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | ||
Restituisce il valore di base dell'oggetto specificato. | Object |
apply | () | metodo |
AS3 function apply(thisArg:*, argArray:*):*
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Specifica il valore di thisObject
da utilizzare all'interno delle funzioni chiamate da ActionScript. Questo metodo specifica inoltre i parametri da passare a ogni funzione chiamata. Dal momento che apply()
è un metodo della classe Function, è anche un metodo di ogni oggetto Function in ActionScript.
I parametri sono specificati sotto forma di oggetto Array, a differenza di Function.call()
in cui sono specificati sotto forma di elenco delimitato da virgole. Ciò risulta spesso utile quando non si conosce il numero dei parametri da passare finché lo script non viene effettivamente eseguito.
Restituisce il valore che la funzione chiamata specifica come valore restituito.
Parametri
thisArg:* (default = NaN ) — L'oggetto a cui viene applicata la funzione.
| |
argArray:* (default = NaN ) — Un array i cui elementi vengono passati come parametri alla funzione.
|
* — Qualunque valore specificato dalla funzione chiamata.
|
Elementi API correlati
call | () | metodo |
AS3 function call(thisArg:*, ... args):*
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Richiama la funzione rappresentata da un oggetto Function. Ogni funzione di ActionScript è rappresentata da un oggetto Function, pertanto tutte le funzioni supportano questo metodo.
Nella maggior parte dei casi, potete utilizzare l'operatore di chiamata della funzione (()
) anziché questo metodo. L'operatore di chiamata della funzione crea un codice conciso e leggibile. Questo metodo risulta utile soprattutto quando il parametro thisObject
della richiamata della funzione deve essere esplicitamente controllato. In genere, se una funzione viene richiamata come metodo di un oggetto all'interno del corpo della funzione, thisObject
viene impostato su myObject
, come illustrato di seguito:
myObject.myMethod(1, 2, 3);
In alcuni casi, può essere necessario impostare il parametro thisObject
in modo che faccia riferimento a un'altra posizione; ad esempio, per richiamare una funzione come metodo di un oggetto quando la funzione non è effettivamente memorizzata in questo modo.
myObject.myMethod.call(myOtherObject, 1, 2, 3);
È possibile passare il valore null
per il parametro thisObject
per invocare una funzione come funzione regolare e non come metodo di un oggetto. Ad esempio, le seguenti invocazioni di funzione sono equivalenti:
Math.sin(Math.PI / 4) Math.sin.call(null, Math.PI / 4)
Restituisce il valore che la funzione chiamata specifica come valore restituito.
Parametri
thisArg:* (default = NaN ) — Un oggetto che specifica il valore di thisObject all'interno del corpo della funzione.
| |
... args — Il parametro o i parametri da passare alla funzione. È possibile specificare zero o più parametri.
|
* |
Elementi API correlati
FunctionExample
, SimpleCollection
, EventBroadcaster
e EventListener
per mostrare i vari modi di utilizzare le funzioni in ActionScript. Questa operazione viene eseguita mediante la procedura seguente:
- La funzione di costruzione di
FunctionExample
crea una variabile locale denominatasimpleColl
, che viene compilata con un array di numeri interi compresi tra1
e8
. - L'oggetto
simpleColl
viene stampato mediantetrace()
. - Un oggetto EventListener,
listener
, viene aggiunto asimpleColl
. - Quando vengono chiamate le funzioni
insert()
eremove()
, il listener risponde ai loro eventi. - Viene creato un secondo oggetto SimpleCollection denominato
greaterThanFourColl
. - All'oggetto
greaterThanFourColl
viene assegnato il risultato disimpleColl.select()
con l'argomento4
e una funzione anonima. Il metodo select dell'oggetto SimpleCollection è un iteratore interno che utilizza il parametro della funzione anonima come un blocco.
package { import flash.display.Sprite; public class FunctionExample extends Sprite { public function FunctionExample() { var simpleColl:SimpleCollection; simpleColl = new SimpleCollection(0, 1, 2, 3, 4, 5, 6, 7, 8); trace(simpleColl); // 0, 1, 2, 3, 4, 5, 6, 7, 8 var listener:EventListener = new EventListener(); simpleColl.addListener(listener); simpleColl.insert(9); // itemInsertedHandler: 9 simpleColl.remove(8); // itemRemovedHandler: 8 trace(simpleColl); // 0, 1, 2, 3, 4, 5, 6, 7, 9 var greaterThanFourColl:SimpleCollection; greaterThanFourColl = simpleColl.select(4, function(item:int, value:int){ return item > value }); trace(greaterThanFourColl); // 5, 6, 7, 9 } } } import flash.display.Sprite; class EventBroadcaster { private var listeners:Array; public function EventBroadcaster() { listeners = new Array(); } public function addListener(obj:Object):void { removeListener(obj); listeners.push(obj); } public function removeListener(obj:Object):void { for(var i:uint = 0; i < listeners.length; i++) { if(listeners[i] == obj) { listeners.splice(i, 1); } } } public function broadcastEvent(evnt:String, ...args):void { for(var i:uint = 0; i < listeners.length; i++) { listeners[i][evnt].apply(listeners[i], args); } } } class SimpleCollection extends EventBroadcaster { private var arr:Array; public function SimpleCollection(... args) { arr = (args.length == 1 && !isNaN(args[0])) ? new Array(args[0]) : args; } public function insert(obj:Object):void { remove(obj); arr.push(obj); broadcastEvent("itemInsertedHandler", obj); } public function remove(obj:Object):void { for(var i:uint = 0; i < arr.length; i++) { if(arr[i] == obj) { var obj:Object = arr.splice(i, 1)[0]; broadcastEvent("itemRemovedHandler", obj); } } } public function select(val:int, fn:Function):SimpleCollection { var col:SimpleCollection = new SimpleCollection(); for(var i:uint = 0; i < arr.length; i++) { if(fn.call(this, arr[i], val)) { col.insert(arr[i]); } } return col; } public function toString():String { var str:String = new String(); for(var i:uint = 0; i < arr.length - 1; i++) { str += arr[i] + ", "; } str += arr[arr.length - 1]; return str; } } class EventListener { public function EventListener() { } public function itemInsertedHandler(obj:Object):void { trace("itemInsertedHandler: " + obj); } public function itemRemovedHandler(obj:Object):void { trace("itemRemovedHandler: " + obj); } }
Tue Jun 12 2018, 02:44 PM Z