Пакет | Верхний уровень |
Класс | public final class Function |
Наследование | Function Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Методы класса немного отличаются от объектов Function. В отличие от обычного объекта функции метод тесно связан со связанным объектом класса. Поэтому метод или свойство имеют определение, используемое всеми экземплярами одного и того же класса. Из экземпляра можно извлечь методы, обрабатываемые как «связанные» методы (сохраняющие ссылку на исходный экземпляр). В рамках связанного метода ключевое слово this
указывает на исходный объект, реализовавший этот метод. В случае функции this
указывает на связанный объект на момент вызова функции.
Метод | Определено | ||
---|---|---|---|
Указывает значение thisObject, используемого в любой функции, вызываемой ActionScript. | Function | ||
Вызывает функцию, представленную объектом Function. | Function | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object |
apply | () | метод |
AS3 function apply(thisArg:*, argArray:*):*
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Указывает значение thisObject
, используемого в любой функции, вызываемой ActionScript. Этот метод также указывает параметры, передаваемые любой вызванной функции. Поскольку apply()
— это метод класса Function, он также является методом любого объекта Function в ActionScript.
Параметры указываются как объект Array в отличие от метода Function.call()
, в котором параметры представлены в виде списка, разделенного запятыми. Часто бывает полезно, когда ряд передаваемых параметров неизвестен вплоть до фактического выполнения сценария.
Возвращает значение, которое вызванная функция указывает в качестве возвращаемого значения.
Параметры
thisArg:* (default = NaN ) — Объект, к которому применяется функция.
| |
argArray:* (default = NaN ) — Массив, элементы которого передаются функции в качестве параметров.
|
* — Любое значение, указанное вызванной функцией.
|
Связанные элементы API
call | () | метод |
AS3 function call(thisArg:*, ... args):*
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Вызывает функцию, представленную объектом Function. Каждая функция в ActionScript представлена объектом Function, и все функции поддерживают этот метод.
Почти всегда вместо этого метода можно прибегнуть к оператору вызова функции (()
). Оператор вызова функции создает краткий и легко читаемый код. Этот метод полезен, в основном, тогда, когда параметр thisObject
вызова функции необходимо контролировать явным образом. Обычно если функция вызывается как метод объекта, находящегося в теле функции, параметру thisObject
присваивается значение myObject
, как показано в следующем примере:
myObject.myMethod(1, 2, 3);
В некоторых ситуациях может потребоваться, чтобы thisObject
указывал на другой объект (например, если функцию необходимо вызвать как метод объекта, но на самом деле она не сохраняется как метод этого объекта):
myObject.myMethod.call(myOtherObject, 1, 2, 3);
Чтобы вызвать функцию в качестве регулярной функции, а не метода объекта, можно присвоить значение null
параметру thisObject
. Например, эквивалентны следующие вызовы функции:
Math.sin(Math.PI / 4) Math.sin.call(null, Math.PI / 4)
Возвращает значение, которое вызванная функция указывает в качестве возвращаемого значения.
Параметры
thisArg:* (default = NaN ) — Объект, указывающий значение thisObject в теле функции.
| |
... args — Один или несколько параметров, передаваемых функции. Можно указать 0 или несколько параметров.
|
* |
Связанные элементы API
FunctionExample
, SimpleCollection
, EventBroadcaster
и EventListener
используются для показа различных применений функций в ActionScript. Это можно сделать, выполнив следующие действия:
- Конструктор
FunctionExample
создает локальную переменнуюsimpleColl
, которая заполняется массивом целых чисел в диапазоне от1
до8
. - Объект
simpleColl
выводится на печать методомtrace()
. - Объект EventListener (
listener
) добавляется вsimpleColl
. - При вызове функций
insert()
иremove()
этот прослушиватель отвечает на их события. - Создается второй объект SimpleCollection с именем
greaterThanFourColl
. - Объекту
greaterThanFourColl
присваивается результатsimpleColl.select()
с аргументом4
и анонимной функцией. Метод выбора объекта SimpleCollection — внутренний итератор, использующий в качестве блока анонимный параметр функции.
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, 11:34 AM Z