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

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.07.2008, 12:51
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 1  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от riden Посмотреть сообщение
Не совсем так. [u]Область видимости не изменится.
Это называется внешняя область видимости. Она не изменяется, да, а this (ссылка на рабочую область видимости, на объект, если уж вам так хочется) — изменяется.

Цитата:
Сообщение от riden Посмотреть сообщение
Так и есть, приватная функция (вложенная функция) работает в области видимости класса (функции внешней).
И не приплетайте сюда больше this из классового ООП, там this указывает всегда на класс (и соответственно на каждый экземпляр), здесь - на "объект активации функции". К области видимости функции это отношение не имеет.
P.S: ну и у кого каша в голове?
У вас каша. Вы трындите о том, что локальная функция не работает в области видимости экземпляра класса (обратите внимание на выделенное слово). Я прекрасно знаю, что сама по себе без лишних телодвижений она так не работает, в отличие от AS3. Слово «должна» в моих высказываниях означает, что надо сделать так, чтобы эта функция себя так вела, а вы продолжаете уже черт знает какой пост подряд твердить одно и то же про «не приплетайте сюда AS3» и что она так не работает. Не работает — значит надо сделать, чтобы работало именно так. А вы влепили костыль в виде ссылки на экземпляр, опять же, не зная про call и apply.

Вы мой код вообще видели из поста #379? Вы внимательно читали пост #391 в отношении к областям видимости и делегированию или нет? Похоже, что нет, о чем тогда разговаривать?

p.S.:
Есть одна хорошая цитата из книги «Объектно-ориентированное программирование на ActionScript 1» Брендана Холла и Сэмюэла Ван в отношении объектно-ориентированности AS1: «Наследование в ActionScript — уродливое, запутанное дело со можеством всяких ям и ловушек. Плохо, что приходится столько знать о внутреннем устройстве ActionScript, чтобы заставить работать такое элементарное понятия ООП, как наследование».

Старый 01.07.2008, 12:40
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 2  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
2 BloodHounD:
Я помню все что писал. Я и неговорю, что во всем был последователен. На меня также подействовало AS3, и эта путаница c this. Просто я счас написал, что __etc (#391) тоже это не понимает, в последних постах (#392).

Добавлено в 10:56
О, прочитал вашу ссылку, так вот о чем вы. Так это вы не понимате до сих пор о чем речь...
Еще раз могу послать вас сюда #389 - Читайте внимательно код и вдумывайтесь... И еще почитайте мой пост 392 внимательно.
P.S: а путаница у меня проскакивала (непоследовательность), только гораздо ранее.
__________________
видеоигры - высший вид искусства


Последний раз редактировалось riden; 01.07.2008 в 12:56. Причина: ссылки
Старый 01.07.2008, 12:51
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
У того же Гурского, на странице 203, написано:
Цитата:
В AS при вызове функции создается особая стуктура, называемая объектом активации.
Цитата:
что область видимости != объект активации функции
Об этом все и говорили, но также говорили, что this указывает на область видимости, а вы на объект активации. А получается, что вызов функции есть, а объекта активации - нет.
Далее, вы писали в 378 посте
Цитата:
this - указатель на объект активации функции, то есть на объект, который вызывает функцию, это может быть объект-экземпляр класса (функции). если функция вызывется из временной диграммы, то - ссылка на _level0, если функция внутри функции тупо лежит и не вызывается, то вы ничего не получите от this.
Модернизируем код выше
Код:
function a () {
	trace ("\t" + this);
}
setInterval(function () {
	trace (this);
	a ();
}, 1000);
согласно вашей цитате, а именно месту "на объект, который вызывает функцию" должно быть два undefined, однако получаем undefined и _level0
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.07.2008, 13:02
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 4  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
2 Inils: ну я же понятно написал, о различии вызова объектом и методом, или нет?
Поэтому и называется - "объект активации функции". Процитирую свой отредактированный пост:
Цитата:
//и подобные вещи: вызов внутри другой функции (не методом, а
//непосредственно), которая тоже
//вызывается, инициализируется объектом
__________________
видеоигры - высший вид искусства

Старый 01.07.2008, 13:07
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 5  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
2 __etc:
Цитата:
Сообщение от __etc
Вы трындите о том, что локальная функция не работает в области видимости экземпляра класса (обратите внимание на выделенное слово).
Я пишу:
Цитата:
приватная функция (вложенная функция) работает в области видимости класса (функции внешней).
Это значит, что все переменные (свойства) во внешней функции (классе) видны. Все свойства внутри тела класса (функции) копируются, с созданием экземпляра. И можно также (как и в AS3, например this[область видимости экземпляра]-parent) через ссылку на this-класса, получить доступ к руту экземпляра.
P.S: нет, похоже, это у вас все таки каша в голове.
__________________
видеоигры - высший вид искусства


Последний раз редактировалось riden; 01.07.2008 в 13:15. Причина: как и в AS3
Старый 01.07.2008, 13:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от riden Посмотреть сообщение
Это значит, что все переменные (свойства) во внешней функции (классе) видны.
Но не экземпляра. А нужно экземпляра, последний раз об этом говорю (я даже нужный код уже привел фиг знает, когда, а вы все не унимаетесь), так что лично я закончил тему по поводу объектов активации. Я уже три десятка постов назад продолжил тему объектно-ориентированности AS1, а вы всё тянете свои чертовы объекты активации, хотя речь шла вообще о реализации приватов в AS1 и они реализованы уже. Сейчас речь идет о реализации всех трех принципов ООП одновременно, на основе AS3-варианта. Если вы не хотите в этом участвовать — пожалуйста, не мешайте другим, в особенности товарищу индейцу.

Цитата:
Сообщение от riden Посмотреть сообщение
P.S: нет, похоже, это у вас все таки каша в голове
Я, в отличие от вас, не редактирую по 10 раз посты после того, как на первоначальные редакции уже были даны ответы. Если вы будете продолжать сначала писать одно, потом редактировать и писать другое через полчаса, тогда мне не о чем с вами разговаривать. После этого вы начинаете утверждать, что, якобы, у меня каша в голове.

Старый 01.07.2008, 13:30
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
...инициализируется объектом
Код:
function a () {
	trace (this); 
}
function b(){
	trace (this);
	a()
}
new b()
setInterval(a, 1000);
[object Object]
_level0
undefined

Ну вот откуда тут _level0?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.07.2008, 14:24
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Яски, есть ООП, а есть возможности языка с вашей логикой Вы мне можите доказывать, что Джава не язык программирования вовсе, так как там нету класса MovieClip что за бред Вы несёте про this, про inline-методы, перегрузка операторов? какое отношение к ООП они имеют? миксинг классов вообще фактически с точки зрения ООП, противопоказан.


Последний раз редактировалось BlooDHounD; 01.07.2008 в 15:07.
Старый 01.07.2008, 17:57
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 9  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Цитата:
Сообщение от __etc Посмотреть сообщение
Ещё раз говорю, что язык вам позволяет реализовывать ООП, куцое, правда. Но у него нет средств для обеспечения той же приватности или полиморфизма, эти вещи разработчик просто в голове держит и все.
А какие средства вам еще нужны, то что можно создавать объекты, назначать им свойства и методы уже является дополнительной возможностью. Например, в том же Си такой возможности нет.

Цитата:
Сообщение от __etc Посмотреть сообщение
Не работает, вы не находите?
Для того, чтобы использовать более точную версию AS1 я писал в Flash MX, возможно в Flash CS ситуация изменилась. Скорей всего __proto__ надо писать как prototype.

Цитата:
Сообщение от __etc Посмотреть сообщение
Если рассматривать понятие ООП как более абстрактное, программирование с использованием понятия объектов, то тогда большинство языков объектно-ориентированные.
ООП является стандартом дефакто, совсем без него плохо.

Цитата:
Сообщение от __etc Посмотреть сообщение
Я уже говорил, что я согласен на формулировку, что AS1 — ООП язык, но только с приставкой «псевдо». Class-based языки — ООП языки без приставок.
Хорошо, называйте его "псевдо", но "прототипный" будет точнее.

Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
Яски, есть ООП, а есть возможности языка с вашей логикой Вы мне можите доказывать, что Джава не язык программирования вовсе, так как там нету класса MovieClip что за бред Вы несёте про this, про inline-методы, перегрузка операторов? какое отношение к ООП они имеют? миксинг классов вообще фактически с точки зрения ООП, противопоказан.
Я тоже считаю, что бредово приписывать к ООП такие частные понятия, как интерфейсы, классы, приватные методы.

Старый 01.07.2008, 18:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Яски Посмотреть сообщение
А какие средства вам еще нужны, то что можно создавать объекты, назначать им свойства и методы уже является дополнительной возможностью.
Вы выходите в более высокий уровень абстракции, чем я, вам достаточно просто наличия объектов. Мне — нет.

Цитата:
Сообщение от Яски Посмотреть сообщение
Для того, чтобы использовать более точную версию AS1 я писал в Flash MX, возможно в Flash CS ситуация изменилась. Скорей всего __proto__ надо писать как prototype.
Нет, там побольше будет строчек, целых три.

Цитата:
Сообщение от Яски Посмотреть сообщение
Я тоже считаю, что бредово приписывать к ООП такие частные понятия, как интерфейсы, классы, приватные методы.
Wiki
Из последнего абзаца основных понятий AS1 — подвид ООП, прототипный. Он использует не все исходные понятия ООП. Т. е., есть собственные прототипы, есть наследование. Остальное реализуется лишь на уровне собственных правил разработчика, которым он следует, язык в этом, увы, участия не принимает.

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

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

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


 


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


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