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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 19.04.2004, 10:40
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 1  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
По умолчанию аргументы метода

Привет,
все выходные я много думал об ООП и судьбе России. Меня смущает область видимости аргументов метода.

function CompareFunction () {}
arrayName.sort (CompareFunction);

CompareFunction не свойство arrayName, почему же оно попадает в область действия метода??


Последний раз редактировалось dm_nev; 19.04.2004 в 10:42.
Старый 19.04.2004, 11:27
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 2  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
не попадает.
ну, в том виде, в котором ты думаешь (становлюсь телепатом)

в теле функции его нет
но есть в мувике, в котором ты его написал.
то же самое записать можно так:

this.CompareFunction = function () {}
arrayName.sort (this.CompareFunction);

- так все встало на свои места?

Старый 19.04.2004, 11:31
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 3  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
интереснее вот такая конструкция:

this.insideTest = function() {
var bla = 0;
this.test = function() {
trace(++bla);
};
};
this.insideTest()
this.onMouseUp = function() {
this.test()
};

Старый 19.04.2004, 17:07
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 4  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
О, спасибо за интересные примеры. Почему работает последний я все-таки еще не вник.
А что касается моего, то получается, что Compare действительно сначала ищется в свойствах Array, потом еще где-то, потом в _root, а потом в Object.prototype, верно? Я бредово объясняю, но у Мук эту тему не очень подробно затрагивает.
ваще флуд получился, ты на этот раз понимаешь что я хотел сказать?

Старый 19.04.2004, 17:39
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 5  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
область видимости и наследование. вот о чем речь собственно.

более того, многие авторы достаточно серьезных книг таки не воткнулись в тему.
например на мои вопросы к дебройлу с этим примером он ответил, что это наверное баг

хотя это не так.

объяснение такое:

1) любой объект, а также его наследники, суть вещь безымянная и всего лишь область памяти. Кстати и мувиклип тоже.
2) объект нельзя удалить напрямую. типа delete my_object
- таким образом мы удаляем лишь ссылку на него. но не сам объект.
3) объект может быть удален ТОЛЬКО сборщиком мусора, если на него не осталось ссылок. других вариантов нет.

- как это влияет на то, что мой пример работает?
- при вызове функции создается временный объект, который как минимум является наследником Object, в именном пространстве которого и хранятся все временные (var) переменные. Этот временный объект удаляется по окончании работы функции.
НО
как мы выяснили право удалять имеет только сборщик мусора.
и у нас осталась функция, которая имеет ссылку на переменную, находящуюся в этом объекте. соответственно у переменной осталась ссылка на объект-родитель и этот родитель не будет удален сборщиком мусора - ссылочка-то вот она!

Поэтому переменная не обнуляется.
- все работает правильно.

Старый 19.04.2004, 17:45
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 6  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Цитата:
А что касается моего, то получается, что Compare действительно сначала ищется в свойствах Array
- не ищется.
Это заблуждение. Создай Compare в этом массиве и увидищь, что обращения к нему не будет.

Если отсутствует явное указание пути к объекту, то флэш ищет в следующем порядке:
- в текущем мувиклипе
- в прототипе MovieClip
- в прототипе Object
- в _global
- вызывается функция __resolve

Старый 19.04.2004, 17:51
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 7  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
года полтора назад, помнится, мы тут с john'ом ломали копья, было совершенно не понятно с какой радости можно поменять временные переменные, являвшиеся аргументами функции, уже ПОСЛЕ того как эта функция завершила работу :)

и колин мук, кстати, это дело объясняет. сам видел :)

при вызове функции создаётся пространство имён, которое убивается только сборщиком мусора, который работает непонятно по какому принципу. я вот не нашел документации никакой по этому делу... может в СДК к плееру есть что-то ? не смотрел.

Старый 19.04.2004, 18:01
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 8  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
а чего копья ломать? я ж все объяснил

Старый 19.04.2004, 18:08
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 9  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
не хотел тебя огорчать, но это было объяснено на заре выхода шестёрки :)) в пятёрке как-то не наступалось на эти грабли...

странно, что дебройль не воткнул чего-то.. я думаю он тебя вообще не понял :)

Старый 19.04.2004, 18:24
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 10  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
дык. тогда и нашли объяснение. просто не здесь эта тема шоркалась. на руфлэш.

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

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

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


 


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


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