180bpm

as, is, 캐스팅 + instanceof 본문

Flash/기타

as, is, 캐스팅 + instanceof

powdersnow 2012. 8. 19. 23:16

http://help.adobe.com/ko_KR/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f87.html

4줄요약

is는 표현식을 비교, true or false
as는 데이터 유형을 비교, exp1 or null is랑 비슷하지만 return값이 다름.
타입 캐스팅은 파라메터로 들어간 값을 해당 클래스로 변환 시켜서 return. 성공 or 컴파일 에러?
instanceof는 프로토타입 체인을 비교. true or false. 부정확함. is를 추천



is 연산자

http://help.adobe.com/ko_KR/FlashPlatform/reference/actionscript/3/operators.html#is

expression1 is expression2


첫번째 표현식이 두번째 표현식에 속한것인지

객체가 특정 데이터 유형의 멤버인지 확인한다.

상속받은 클래스까지도 검사를 한다.


var mySprite:Sprite = new Sprite();

trace(mySprite is Sprite);           // true

trace(mySprite is DisplayObject);    // true

trace(mySprite is IEventDispatcher); // true


return값은 true or false


*********************************************************

as 연산자

http://help.adobe.com/ko_KR/FlashPlatform/reference/actionscript/3/operators.html#as

expression as datatype

첫번째 표현식이 두번째 연산자로 지정된 데이터 유형의 멤버인지.

와일드카드형은 쓸 수 없다.

두 번째 피연산자에 사용된 표현식은 데이터 유형으로 평가되어야 함

리턴값은  expression or null


public var myArray:Array = ["one", "two", "three"];

trace(myArray as Array);  // one,two,three

trace(myArray as Number); // null

trace(myArray as int);    // null



*********************************************************

instanceof 연산자

expression instanceof function

http://help.adobe.com/ko_KR/FlashPlatform/reference/actionscript/3/operators.html#instanceof

첫번째 표현식의 프로토타입 체인에 functon에 대한 프로토타입 객체가 포함되어있는지

instanceof에서는 인터페이스를 포함시키지 않기 때문에 항상 false를 반환.

다만, 인터페이스를 모두 구현한 클래스를 연산한다면 true가 반환됨.


var mySprite:Sprite = new Sprite();

trace(mySprite instanceof Sprite);        // true

trace(mySprite instanceof DisplayObject); // true

trace(mySprite instanceof IBitmapDrawable); // false

trace(mySprite is IBitmapDrawable);         // true


*********************************************************


타입 캐스팅 - 명시적 변환

var foo:SomeClass = SomeClass(someObject); //인스턴스가 생성되지 않음. 타입 캐스팅만

var bar:SomeClass = new SomeClass(someObject); //someObject를 인자로 넘기면서 새로운 인스턴스를 생성한다.

생성자가 파라메터를 가지는 경우에는 에러가 날 수 있다.


Comments