[AS3] Novos operadores 'is' e 'as'
O operador is
O operador is, que é novo no ActionScript 3.0, permite testar se uma variável ou expressão é um membro de um determinado tipo de dados. Nas versões anteriores do ActionScript, o operador instanceof fornecia essa funcionalidade, mas, no ActionScript 3.0, o operador instanceof não deve ser usado para testar a associação de tipo de dados. O operador is deve ser usado no lugar do operador instanceof para verificação de tipos manual, porque a expressão x instanceof y apenas verifica a existência de x na cadeia de protótipos y (e, no ActionScript 3.0, a cadeia de protótipos não fornece um retrato completo da hierarquia de herança).
O operador is examina a hierarquia de herança apropriada e pode ser usado para verificar não apenas se um objeto é uma ocorrência de uma classe específica, mas também de uma classe que implementa uma determinada interface. O exemplo a seguir cria uma ocorrência da classe Sprite, chamada mySprite e usa o operador is para testar se mySprite é uma ocorrência das classes Sprite e DisplayObject e se implementa a interface IEventDispatcher:
var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite); // true
trace(mySprite is DisplayObject);// true
trace(mySprite is IEventDispatcher); // true
O operador is verifica a hierarquia de herança e relata adequadamente que mySprite é compatível com as classes Sprite e DisplayObject (a classe Sprite é uma subclasse da classe DisplayObject). O operador is também verifica se mySprite é herdada de alguma classe que implementa a interface IEventDispatcher. Como a classe Sprite é herdada da classe EventDispatcher, que implementa a interface IEventDispatcher, o operador is relata corretamente que mySprite implementa a mesma interface.
O exemplo a seguir mostra os mesmos testes do exemplo anterior, mas com instanceof em vez do operador is. O operador instanceof identifica corretamente que mySprite é uma ocorrência de Sprite ou DisplayObject, mas retorna false quando usado para testar se mySprite implementa a interface IEventDispatcher.
trace(mySprite instanceof Sprite); // true
trace(mySprite instanceof DisplayObject);// true
trace(mySprite instanceof IEventDispatcher); // false
O operador as
O operador as, que é novo no ActionScript 3.0, também permite verificar se uma expressão é um membro de um determinado tipo de dados. Diferentemente do operador is, porém, o operador as não retorna um valor booleano. Em vez disso, o operador as retorna o valor da expressão em vez de true e null em vez de false. O exemplo a seguir mostra os resultados do uso do operador as em vez de is no caso simples de verificar se uma ocorrência de Sprite é um membro dos tipos de dados DisplayObject, IEventDispatcher e Number.
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
Durante o uso do operador as, o operando à direita deve ser um tipo de dados. Uma tentativa de usar uma expressão diferente de um tipo de dados como operando à direita resultará em um erro.
Fonte: PROGRAMAÇÃO DO ACTIONSCRIPT 3.0 PARA FLASH - pág 56 e 57
Linguagem e sintaxe do ActionScript
download do PDF de Ajuda em pt_BR (10 MB) >> http://help.adobe.com/pt_BR/ActionScript/3.0_ProgrammingAS3/
Discussão (4)
Carregando comentários...