Pakiet | Najwyższy poziom |
Klasa | public final class Function |
Dziedziczenie | Function Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Metody klasy różnią się nieznacznie do obiektów Function. W przeciwieństwie do obiektu zwykłej funkcji, metoda pozostaje w ścisłym związku ze skojarzoną klasa obiektu. Z tego względu, metoda lub właściwość posiada definicję, która jest udostępniana wszystkim instancjom tej samej klasy. Można wyodrębnić metody z instancji i traktować je jako metody „wiązane” (czyli takie, które zachowują łącze z oryginalną instancją). W przypadku metody wiązanej słowo kluczowe this
wskazuje na oryginalny obiekt, który implementował tę metodę. W przypadku funkcji słowo kluczowe this
wskazuje na obiekt skojarzony w momencie wywołania funkcji.
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Określa wartość parametru thisObject, która zostanie użyta w dowolnej funkcji wywołanej za pomocą narzędzia ActionScript. | Function | ||
Wywołuje funkcję reprezentowaną przez obiekt Function. | Function | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
apply | () | metoda |
AS3 function apply(thisArg:*, argArray:*):*
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Określa wartość parametru thisObject
, która zostanie użyta w dowolnej funkcji wywołanej za pomocą narzędzia ActionScript. Ta metoda określa również parametry przekazywane do dowolnej, wywołanej funkcji. Ponieważ metoda apply()
należy do klasy Function, stanowi ona również metodę dla każdego obiektu Function w narzędziu ActionScript.
Parametry są określone jako obiekt Array, w przeciwieństwie do metody Function.call()
, która określa parametry jako elementy listy oddzielone przecinkami. Jest to przydatne w przypadku gdy liczba przekazywanych parametrów nie jest znana do momentu rzeczywistego wykonania skryptu.
Zwraca wartość określoną przez wywołaną funkcję jako wartość zwróconą.
Parametry
thisArg:* (default = NaN ) — Obiekt do którego funkcja ma zastosowanie.
| |
argArray:* (default = NaN ) — Tablica, której elementy są przekazywane do funkcji jako parametry.
|
* — Dowolna wartość określona przez wywołaną funkcję.
|
Powiązane elementy interfejsu API
call | () | metoda |
AS3 function call(thisArg:*, ... args):*
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywołuje funkcję reprezentowaną przez obiekt Function. Każda funkcja w narzędziu ActionScript jest reprezentowana przez obiekt Function, z tego względu wszystkie funkcje obsługują tę metodę.
W prawie wszystkich przypadkach zamiast tej metody można użyć operatora wywoływania funkcji (()
). Operator wywoływania funkcji generuje zwięzły i czytelny kod. Tę metodę wykorzystuje się przede wszystkim w przypadku gdy należy jawnie sterować parametrem thisObject
wywołania funkcji. Zwykle jeśli funkcja jest wywoływana jako metoda obiektu w funkcji, parametr thisObject
zostaje ustawiony na wartość myObject
, jak pokazano w poniższym przykładzie:
myObject.myMethod(1, 2, 3);
W niektórych sytuacjach użytkownik może zechcieć, aby parametr thisObject
wskazywał inną wartość, jak w przypadku gdy konieczne jest, aby funkcja, która nie jest zwykle zapisywana jako metoda dla danego obiektu, była wywoływana jako metoda tego obiektu:
myObject.myMethod.call(myOtherObject, 1, 2, 3);
Przekazanie parametrowi thisObject
wartości null
spowoduje wywołane funkcji jako regularnej funkcji, a nie metody tego obiektu. Na przykład następujące wywołania funkcji są równoważne:
Math.sin(Math.PI / 4) Math.sin.call(null, Math.PI / 4)
Zwraca wartość określoną przez wywołaną funkcję jako wartość zwróconą.
Parametry
thisArg:* (default = NaN ) — Obiekt określający wartość parametru thisObject w funkcji.
| |
... args — Parametr lub parametry przekazywane do funkcji. Parametry mogą zostać określone lub nie.
|
* |
Powiązane elementy interfejsu API
FunctionExample
, SimpleCollection
, EventBroadcaster
oraz EventListener
w celu ukazania różnych zastosowań funkcji w narzędziu ActionScript. Proces przebiega w następujący sposób:
- Za pomocą konstruktora
FunctionExample
należy utworzyć lokalną zmienną o nazwiesimpleColl
, która jest zapełniana tablicą liczb całkowitych z zakresu od1
do8
. - Za pomocą instrukcji
trace()
drukowany jest obiektsimpleColl
. - Do obiektu
simpleColl
dodawany jest obiekt EventListener,listener
. - Wywołanie funkcji
insert()
iremove()
spowoduje, że obiekt listener odpowie na wywołane przez nie zdarzenia. - Tworzony jest drugi obiekt SimpleCollection o nazwie
greaterThanFourColl
. - Do obiektu
greaterThanFourColl
zostają przypisane rezultaty metodysimpleColl.select()
wraz z argumentem4
i anonimową funkcją. Metoda zaznaczania obiektu SimpleCollection stanowi wewnętrzny iterator, który używa parametru funkcji anonimowej jako blok.
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, 12:06 PM Z