패키지 | 최상위 레벨 |
클래스 | public final class Function |
상속 | Function Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
클래스의 메서드는 Function 객체와 조금 다릅니다. 일반적인 함수 객체와 달리 메서드는 관련 클래스 객체와 밀접하게 연결되어 있습니다. 따라서 메서드 또는 속성의 정의는 동일한 클래스의 모든 인스턴스 간에 공유됩니다. 인스턴스에서 메서드를 추출하여 원래 인스턴스에 대한 링크가 유지되는 "바인딩된" 메서드로 취급할 수 있습니다. 바인딩된 메서드의 경우 this
키워드는 메서드를 구현한 원래 객체를 가리킵니다. 함수의 경우 this
는 함수 호출 시 관련된 객체를 가리킵니다.
메서드 | 정의 주체 | ||
---|---|---|---|
ActionScript가 호출하는 함수에 사용될 thisObject 값을 지정합니다. | 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 클래스의 메서드이므로 ActionScript에 있는 모든 Function 객체의 메서드이기도 합니다.
매개 변수를 쉼표로 구분된 목록으로 지정하는 Function.call()
과 달리 이러한 매개 변수는 Array 객체로 지정됩니다. 이는 스크립트가 실제로 실행될 때까지 전달할 매개 변수의 개수를 알 수 없는 경우에 유용합니다.
호출된 함수에서 반환 값으로 지정한 값을 반환합니다.
매개 변수
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);
thisObject
매개 변수에 null
값을 전달하면 함수를 객체의 메서드가 아닌 일반 함수로 호출할 수 있습니다. 예를 들어 다음 함수의 호출 결과는 모두 동일합니다.
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
사이의 정수 배열로 채웁니다.trace()
를 사용하여simpleColl
객체를 출력합니다.- EventListener 객체인
listener
를simpleColl
에 추가합니다. insert()
및remove()
함수를 호출하면 리스너가 해당 이벤트에 응답합니다.greaterThanFourColl
이라는 두 번째 SimpleCollection 객체를 만듭니다.greaterThanFourColl
객체에 인수4
와 익명 함수를 사용한simpleColl.select()
의 결과가 할당됩니다. 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, 03:17 PM Z