![]() |
Яски, я прошу написать не по отдельности все принципы ООП, а все вместе, пример на AS3 я привел. Истинно объектно-ориентированным языком можно назвать тот язык, который позволяет на уровне языка реализовать три принципа ООП сразу вместе на парочке классов, а не по отдельности, причем, реализованных средствами самого языка, а не руками, как тут уже всю тему пытаются сделать.
В AS1 у вас этого не получится, подобную приватность не скрестить с наследованием, а полиморфизма в AS1 вообще нет ни в каком виде. AS1 вам позволяет думать в стиле ООП, но не дает вам средств работы с ним. Т. е. вы сами реализовываете наследование (ручками), сами реализовываете приватность (либо на уровне договоренности с самим собой, что некоторые методы извне вызывать нельзя), а полиморфизм держите в голове. А посему, AS1 — псевдо-ООП язык, не является истинно объектно-ориентированным, как и JavaScript. Кстати, наследование реализуется не так, как вы написали, это вообще будет ручной труд по копированию методов от предка к наследнику. Для наследования у вас есть скрытые костыли языка в виде __proto__ и __constructor__. riden, то, что у вас каша в голове, созданная товарищем Гурским, наглядно показывает перепутанные caller, про который я спрашивал и callee. Возьмите, хотя бы, Essential ActionScript 2.0, все станет просто и понятно. И потом, если вы не заметили, приемлимый вариант приватности уже привели (хотя мой вариант мне гораздо больше нравится, чем у wxvxw, потому что у меня функция не видна снаружи вообще). Ваш объект активации, суть объект, в контексте которого вызывается функция, т. е. в его области видимости. При использовании кейворда new создается новая область видимости. В AS3 поведение иное, область видимости не изменяется, даже если присвоить ссылку на метод класса другому объекту. А в AS1/AS2 функция будет вызвана в области видимости того объекта, к которому она присвоена: Код:
o = new Object(); |
2 __etc:
Цитата:
А this - всегда указывает на "объект активации", то есть если функция не будет вызвана, инициализирована - то this==undefined. Цитата:
И не приплетайте сюда больше this из классового ООП, там this указывает всегда на класс (и соответственно на каждый экземпляр), здесь - на "объект активации функции". К области видимости функции это отношение не имеет. P.S: ну и у кого каша в голове? |
Цитата:
Код:
setInterval(function () { |
Цитата:
Под вызовом, инициализацией, я подрузомевал: Код:
function func(){trace(this);} |
Цитата:
|
2 BloodHounD:
Я помню все что писал. Я и неговорю, что во всем был последователен. На меня также подействовало AS3, и эта путаница c this. Просто я счас написал, что __etc (#391) тоже это не понимает, в последних постах (#392). Добавлено в 10:56 О, прочитал вашу ссылку, так вот о чем вы. Так это вы не понимате до сих пор о чем речь... Еще раз могу послать вас сюда #389 - Читайте внимательно код и вдумывайтесь... И еще почитайте мой пост 392 внимательно. P.S: а путаница у меня проскакивала (непоследовательность), только гораздо ранее. |
У того же Гурского, на странице 203, написано:
Цитата:
Цитата:
Далее, вы писали в 378 посте Цитата:
Код:
function a () { |
Цитата:
Цитата:
Вы мой код вообще видели из поста #379? Вы внимательно читали пост #391 в отношении к областям видимости и делегированию или нет? Похоже, что нет, о чем тогда разговаривать? p.S.: Есть одна хорошая цитата из книги «Объектно-ориентированное программирование на ActionScript 1» Брендана Холла и Сэмюэла Ван в отношении объектно-ориентированности AS1: «Наследование в ActionScript — уродливое, запутанное дело со можеством всяких ям и ловушек. Плохо, что приходится столько знать о внутреннем устройстве ActionScript, чтобы заставить работать такое элементарное понятия ООП, как наследование». |
2 Inils: ну я же понятно написал, о различии вызова объектом и методом, или нет?
Поэтому и называется - "объект активации функции". Процитирую свой отредактированный пост: Цитата:
|
2 __etc:
Цитата:
Цитата:
P.S: нет, похоже, это у вас все таки каша в голове. |
| Часовой пояс GMT +4, время: 13:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.