![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
2 __etc
Цитата:
Я давно уже сижу на АС3. Про АС1 вспомнил, так как я прогю в синтаксисе java-script на Директоре 10. Хоть какое-то более-менее божеское ООП, в бэйсико-подобный Lingo не хочу лезть (11 еще не скачивал, не знаю что там с языком).
__________________
видеоигры - высший вид искусства |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ах, извините, таких подробностей я не знал…
Так вы так пишете из-за того, что у вас просто нет нормального языка, а вот наш краснокожий индеец делает это специально из принципа. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
А вот pMet - приватный метод, и его никак не вызвать. Читайте же внимательно. #262 В остальном вроде все понятно. Функция АС1 (Class1) == тело класса в АС3, функция внутри функции (pMet) == приватный метод в АС3. Поэтому вопрос "А работать с ней как тогда?" - не уместен. Свойство (met1) которое ссылается на функцию (pmet1) - паблик метод. Локальная функция(на которую нет ссылки свойства класса) - приват метод. Все функции и переменные распологаются в теле класса(функции) (хотя не обязательно). Так что public и private AS3, полностью реализуемы в AS1.
__________________
видеоигры - высший вид искусства Последний раз редактировалось riden; 29.06.2008 в 16:37. |
|
|||||
|
Modus ponens
|
Есть принципиальная разница между локальными функциями и приватными свойствами класса - то, что вы описали, это локальная функция, ее область видимости не совпадает с обласью видимости класса.
function TClass () {
function toBePrivate () { trace("Should be TClass: "+ this) };
this.toString = function () { return "[TClass]" };
this.callPrivateMethod = function() {toBePrivate()};
}
var t = new TClass();
trace(t);
t.callPrivateMethod();
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 29.06.2008 в 18:13. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
function TClass () {
var d = this
function toBePrivate () { trace("Should be TClass: "+ d) };
this.toString = function () { return "[TClass]" };
this.callPrivateMethod = function() {toBePrivate()};
}
var t = new TClass();
trace(t);
t.callPrivateMethod();
//trace
/*
[TClass]
Should be TClass: [TClass]
*/
__________________
видеоигры - высший вид искусства Последний раз редактировалось riden; 29.06.2008 в 18:24. |
|
|||||
|
Modus ponens
|
Ок, пользуясь вашей терминологией - объект активации приватного метода обязан быть классом, к которому этот метод принадлежит, иначе это не приватный метод. В ситуации вами описанной этого не проиcxодит, что мой пример и демонстрирует.
То что вы трейсите другую локальную переменную - не имеет к смыслу вопроса никакого отношения. Т.как значение этой локальной переменной можно изменить, а область видимости метода изменить нельзя - в этом разница.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 29.06.2008 в 18:29. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
Нет, я такого не говорю. Я вам обяснил смысл this в AS1. Объяснил почему вы получаете undefined, ведь эта функция не является классом грубо говоря. Не происходит создание экземпляра. Цитата:
Добавлено в 16:48 Короче говоря, у каждой функции свой this, по этому вы получаете undefined. Область видимости локальной функции распространяется на все тело класса и даже более. Но в объектном программировании этого "более" не нужно.
__________________
видеоигры - высший вид искусства Последний раз редактировалось riden; 29.06.2008 в 18:48. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Значит я могу вызвать ваш приватный метод извне, так ведь? У меня есть ссылка (met1 на pmet1) на него, снаружи. Значит это уже не приватный метод. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Именно не приватный. Приватным является метод (функция) pMet. Посмотрите еще раз. Ну и надеюсь вам известен смысл приватности в АС3...
__________________
видеоигры - высший вид искусства |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Прочитайте мои два вопроса ещё раз и дайте мне на них ответы. То, что вы написали — не ответ.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|