Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0 > Статьи

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 09.10.2006, 16:37
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 11  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
По умолчанию 37. Оператор is вместо instanceof

В ActionScript 3 введен новый оператор “is” (is operator) для проверки принадлежности экземпляра класса к типу класса или интерфейса.
Код:
var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite);           // true
trace(mySprite is DisplayObject);    // true
trace(mySprite is IEventDispatcher); // true
Оператор is заменяет оператор instanceof (instanceof operator), использовавшийся в ActionScript 1 и 2. Оператор is проверяет цепочку наследования AS3 класса, в то время как instanceof проверяет цепочку прототипов (prototype). Отсюда несколько нюансов:
1. поскольку, AS3 классы воссоздают цепочку прототипов, то с помощью instanceof теоретически можно проверить принадлежность экземпляра класса к определенному типу AS3 класса, но не к интерфейсу:
Код:
var mySprite:Sprite = new Sprite();
trace(mySprite instanceof Sprite);           // true
trace(mySprite instanceof DisplayObject);    // true
trace(mySprite instanceof IEventDispatcher); // false – нет в цепочке прототипов
2. С помощью оператора is нельзя проверить тип динамического класса созданного не через наследование, а через прототип (стиль AS1):
Код:
var AS1StyleClass:Function = function(){}
AS1StyleClass.prototype = new MovieClip();

var as1Instance:* = new AS1StyleClass();
trace(as1Instance instanceof AS1StyleClass);    // true
trace(as1Instance instanceof MovieClip);        // true
trace(as1Instance is AS1StyleClass);    // true
trace(as1Instance is MovieClip);        // false
В AS3 следует использовать только оператор is, прежний оператор instanceof хоть и поддерживается, но компилятор будет выдавать предупреждение:
The instanceof operator is deprecated, use the is operator instead.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Создать новую тему   Часовой пояс GMT +4, время: 15:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.