Вопрос скорее теоретический. @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 11 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Заголовок сообщения: Вопрос скорее теоретический.
Сообщение Добавлено: 2 Май 2006, 18:28:47 
Вот я тут наконец то сподобился изучить создание классов по правилам AS2.0 :dandy:
И вот не могу теоретически объяснить такой момент:

к примеру я создаю в классе A переменную

private var variableA:Number = 10;

И вот я создаю экземпляр класса А

var instA:A = new A();

в этом случае trace(instA.variableA) выдаст ошибку при компиляции.

Но если я создаю новый экземпляр

var anotherA = new A();

то все приватные функции и переменные становятся доступны как ни в чем не бывало.

Разница ясна - в первом случае есть строгая типизация instA, во втором ее нет.

Когда я проверяю

trace(anotherA instanceof A) // вижу true.
_____



Кто знает в чем причина?
Ясно, что можно не парить голову и просто грамотно писать все как положено, но все же )))

_________________
_____
Работа Изображение Работы Изображение О Работе
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 2 Май 2006, 19:12:44 
в чем причина чего? по-моему ты сам ответил на все свои вопросы

_________________
Здравствуй, Олимпийский!
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 2 Май 2006, 20:11:10 
ну дело в том, что флэш проверяет синтаксис только на момент компиляции. и только то что по его мнению ты сам чётко определил. Если ты пишешь не явно, значит тебе и проверять не надо. Если ты казал тип, то компилятор попробует проследить, что с ним ничего не случилось. и то это не факт %) обманывается элементарно:
Код:
trace(instA["variableA"])
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 2 Май 2006, 21:48:29 
BlooDHounD, тут меня что заинстересовало -
ведь class {} - это форма записи as2.0 равно как и строгая типизация переменных была введена именно во 2-й версии.
В первой наследуемые классы создавались через цепочку __proto__, свойтсва давались чере pprototype и прочее - и вот там аналогом private могла стать разве что ASSetProperty.
И вот в этой ситуации получается фишка, что классы (если не типизированы строго) ведут себя как классы as1.0 при форме записи as2.0 :glasses:
Та же ситуция c необъявленными свойствами - если объект создан без типизации - то можно добавлять свойства и без указания dynamic class {}…

Короче, единственная причина, по которой я заморочался этим вопросом - это понять - или это попущение разработчиков, или у этого есть логическое объяснение ))))

_________________
_____
Работа Изображение Работы Изображение О Работе
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 3 Май 2006, 10:17:29 
Мигель, собственно тайна: только никому не говори: АС2 - это и есть АС1, только вид с боку. Все АС2 классы в конце концов приводятся к АС1 виду, а типмзация просто игнорируется после компиляции. даже если ты декомпилишь, ты нигде не найдёшь намёка на тип данных.
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 3 Май 2006, 10:23:18 
BlooDHounD, а я знаю про эту хитрость))

Насколько я знаю, - в этом случае идет как бы два разных процесса компиляции - потому классы и выносятся во внешний файл, но в итоге все сводится к прототипной цепочке

Просто я как самообучающийся организм ( :dandy: ) все хочу прийти к какому то стройному пониманию происходящего ))) А тут такие вензеля, понимаешь.

Ладушки, я исчерпал для себя сей вопрос )
Спасибо за отклик ) :gent:

_________________
_____
Работа Изображение Работы Изображение О Работе
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 3 Май 2006, 13:59:10 
Мигель, каких 2 разных процесса? 2 этапа. первый проверяет ситнтаксис, второй компилирует всё в АС1. если втречается АС2 то он его переводит в АС1 и идёт дальше.
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 3 Май 2006, 17:06:16 
BlooDHounD, этап == процесс ))

бывает и так - сначала процесс - потом этап. )))

Кроем тему ) :beer:

_________________
_____
Работа Изображение Работы Изображение О Работе
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 4 Май 2006, 10:01:23 
Мигель, нет. процесс - может состоять из этапов. а вот этапы не могут состоять из процессов. если конечно ты процессы не понимаешь под значением события.
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 4 Май 2006, 18:13:20 
BlooDHounD, в Вас живет непримиримый борец за истину )))

На самом деле в последнем коменте я пошутить хотел ))

_________________
_____
Работа Изображение Работы Изображение О Работе
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 5 Май 2006, 10:51:34 
Мигель, конечно живёт :) куда ж он денется :)
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 11 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100