![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Значит я могу вызвать ваш приватный метод извне, так ведь? У меня есть ссылка (met1 на pmet1) на него, снаружи. Значит это уже не приватный метод. |
|
|||||
|
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. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Именно не приватный. Приватным является метод (функция) pMet. Посмотрите еще раз. Ну и надеюсь вам известен смысл приватности в АС3...
__________________
видеоигры - высший вид искусства |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Прочитайте мои два вопроса ещё раз и дайте мне на них ответы. То, что вы написали — не ответ.
|
|
|||||
|
Modus ponens
|
riden:
Вы предложение с начала прочитайте, подумайте больше 5 минут, а потом пишите ответ... вы путаете подлежащее и обстоятельство места.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
Цитата:
Добавлено в 17:03 2 wvxvw: Вам я уже сказал, что выиспользуете this для другой функции, поэтому и получаете undefined. Такде я расписал вам смысл this в AS1.
__________________
видеоигры - высший вид искусства Последний раз редактировалось riden; 29.06.2008 в 19:03. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Следовательно, метод не является приватным, потому что он торчит наружу. По ссылке или нет, без разницы, с тем же успехом можно было написать this.privateMethod = function() {}. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:41. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|