태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'AS'에 해당되는 글 1건

  1. 2008/05/28 is / as 연산자 (2)
ria/flex2008/05/28 13:43

is 연산자

ActionScript 3.0 으로 새롭게 도입된 is 연산자를 사용하면, 변수 또는 식이 특정의 데이터형의 멤버일지를 테스트할 수 있습니다.구버젼의 ActionScript 에서는 instanceof 연산자에 같은 기능이 있었습니다만, ActionScript 3.0 에서는 instanceof 연산자는 데이터형의 멤버쉽의 테스트에 사용하지 않습니다.수동에 의한 형태 체크에서는,instanceof 연산자 대신에 is 연산자를 사용할 필요가 있습니다.이것은, 식 x instanceof y 은,x 의 프로토 타입 체인에 y 가 있을지를 체크하는 것만으로 있기 위해, 또 ActionScript 3.0 에서는, 프로토 타입 체인으로 계승 계층 전체를 확인할 수 없기 때문입니다.

is 연산자는, 적절한 계승 계층을 조사합니다.또, 오브젝트가 특정의 클래스의 인스턴스일지 만이 아니고, 특정의 인터페이스를 실장하는 클래스의 인스턴스일지도 조사하기 위해서 사용할 수 있습니다.다음의 예에서는, Sprite 클래스 mySprite 의 인스턴스를 작성해,is 연산자를 사용해 mySprite 가 Sprite 클래스 및 DisplayObject 클래스의 인스턴스일지, 및 IEventDispatcher 인터페이스를 실장하고 있을지를 테스트합니다.

var mySprite:Sprite = new Sprite();
trace (mySprite is Sprite); // 출력 : true
trace (mySprite is DisplayObject); // 출력 : true
trace (mySprite is IEventDispatcher); // 출력 : true

is 연산자는, 계승 계층을 조사하고,mySprite 가 Sprite 클래스 및 DisplayObject 클래스와 호환성이 있는 것을 적절히 보고합니다.다만, Sprite 클래스는 DisplayObject 클래스의 서브 클래스입니다.is 연산자는, mySprite 하지만 IEventDispatcher 인터페이스를 실장하는 클래스를 계승할지도 조사합니다.Sprite 클래스는, IEventDispatcher 인터페이스를 실장하는 EventDispatcher 클래스를 계승하기 위해(때문에),is 연산자는,mySprite 이 같은 인터페이스를 실장하는 것을 올바르게 보고합니다.

다음의 예는, 전의 예와 같은 테스트를 나타내고 있습니다만,is 연산자 대신에 instanceof 연산자를 사용하고 있습니다.instanceof 연산자는,mySprite 이 Sprite 또는 DisplayObject 의 인스턴스인 것을 올바르게 식별합니다만,mySprite 이 IEventDispatcher 인터페이스를 실장하고 있을지의 확인에 사용되었을 경우는,false 을 돌려줍니다.

trace (mySprite instanceof Sprite);           // 출력 : true
trace (mySprite instanceof DisplayObject); // 출력 : true
trace (mySprite instanceof IEventDispatcher); // 출력 : false

as 연산자

ActionScript 3.0 으로 새롭게 추가된 as 연산자를 사용해도, 식이 지정된 데이터형의 멤버일지를 체크할 수 있습니다.그러나,is 연산자와는 달라,as 연산자는 불리언 값을 돌려주지 않습니다.as 연산자는,true 대신에 식의 값,false 대신에 null (을)를 돌려줍니다.다음의 예는, Sprite 인스턴스가 DisplayObject, IEventDispatcher, 및 Number 데이터형의 멤버일지를 체크하는 경우에,is 연산자 대신에 as 연산자를 사용한 결과를 나타냅니다.

var mySprite:Sprite = new Sprite();
trace (mySprite as Sprite); // 출력 : [object Sprite]
trace (mySprite as DisplayObject); // 출력 : [object Sprite]
trace (mySprite as IEventDispatcher); // 출력 : [object Sprite]
trace (mySprite as Number); // 출력 : null

as 연산자를 사용하는 경우, 우측의 오퍼랜드는 데이터형일 필요가 있습니다.우측의 오퍼랜드에 데이터형은 아니고 식을 사용하려고 하면, 에러가 됩니다.

출처: http://flexdocs.kr/docs/flex2/docs/00001824.html

Posted by THLIFE.net

TRACKBACK http://thlife.net/trackback/679 관련글 쓰기

댓글을 달아 주세요

  1. 어디서 많이 본 글이라고 했더니 한글화문서에 글이군요.. ^^;
    출처 표시라도 해주시지...............

    2008/05/28 18:10 [ ADDR : EDIT/ DEL : REPLY ]
  2. 앗,,, 죄송합니다.

    작업중에 갑자기 올리다보니,, ㅜ_ㅜ

    2008/05/29 15:44 [ ADDR : EDIT/ DEL : REPLY ]