![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
Это один из вариантов увиливания от ответа, т.н. демагогия. Мы не говорили про форму земли, ну ни разу до этого. Я никогда, даже в самом страшном сне не пытался утверждать, что земля квадратная, но, тем не менее, вы приписываете мне это высказывание =) Тем самым пытаясь подвергнуть сомнению другое утверждение никак не связанное с приписаным мне ложным =) Попросту - замыливаете глаза, пытаясь увести дискуссию от темы и выставить опонента дураком =)
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 269
|
[увлеченно жует попкорн] ))
wvxvw, я за тебя! но не забывай про первое правило спора )). |
|
|||||
|
.grin! wuz here
|
wvxvw, я имел в виду то, что в ас1 есть приватные свойства. их назвали "локальными функциями". а вы пытаетесь доказать обратное. чтож, успехов.
от того что кто-то не признаёт очевидных вещей суть не меняется.
__________________
Breakcore them all! |
|
|||||
|
Modus ponens
|
Ок, давайте уточним, изначально речь шла про приватные методы - в процессе кто-то оговорился и теперь мы еще и свойства обсуждаем, предлагаю вернуться к изначальной теме =)
Для тех, кто пропустил начало дискуссии: Мои тезисы такие: Метод
По моему глубокому убеждению функция созданная в конструкторе класса не удовлетворяет ни одному из вышеперечисленных условий. Т.как ее область видимости разнится с областью видимости класса, чьим методом она должна быть. Методы объявленные позже на прототипе класса не имеют доступа к этой функции. Функцию объявленную таким образом можно вызвать с разными областями видимости используя call и apply. Я не исключаю возможности, когда выполнение такой функции будет неотличимо от выполнения метода класса, но настаиваю на том, что эти понятия не взаимозаменимы. Поскольку функция не является методом, то проверку на приватность считаю лишней. В заключение: мне кажется семантически более верным называть такую функцию "локальной функцией" либо "служебной функцией" класса для отличия от метода, который исходя из семантики слова предполагает принадлежность чему либо.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
Ну так... ты не то что не смог обратистя к приватному методу - возвращает undefined, я вообще не понимаю на что ты расчитывал, применяя указатель this внутри локальной функции без объекта активации (то есть ни создан ее экземпляр функции, ни вызов функции в теле класса, что бы образовалось "область видимости" и появилась ссылка на указатель) - если бы ты это сделал, ты бы получил this, но так как у объекта активации(объект-экземпляр этой функции или сама функция) нет свойства pMetA, то все равно бы было undefined. На pMet - ничего не ссылается, как ты собираешся к ней доступ получить? К чему эти танцы с бубном? Выше приведенная тобой функция может получить ссылку на this класса (а не функции, как у тебя)... И что дальше? Ты сможешь обратится к свойствам класса (то есть паблик), а все что не свойства класса, а находится внутри - приват. Короче - не связный бред... не в тему. Далее... Цитата:
Вернемся же к теме (облегченный вариант): function Class1(){
//паблик свойство
this.a = 4;
var pa = this;//ссылка
//приват метод изменяте паблик свойство
function pMetA(){pa.a=10;}
//паблик методы
function pmet1(){pMetA();}
function pmet2(){trace("do pmet2");}
this.met1=pmet1;//паблик метод
this.met2=pmet2; //паблик метод
}
////////////////////////////////////////
var obj = new Class1();
var obj1 = new Class1();
trace(obj.a);//4
obj.met1();
trace(obj.a);//10
trace(obj1.a);//4
obj1.met1();
trace(obj1.a);//10
__________________
видеоигры - высший вид искусства Последний раз редактировалось riden; 30.06.2008 в 05:41. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
2 wvxvw:
Цитата:
Цитата:
Если вы подразумеваете под областью видимости вызов this из функции - то я вам уже десять раз говорил, что означает this, и что есть функция в AS1. Область видимости - это доступность свойст из метода, а не то что вы пишите. Вызвав this данной функции - вы получите ссылку на объект активации этой функции. Ну и что, что в AS3 подругому. AS3 - полностью ООП-й язык. В AS3 функции имеют более узкое назначение и применение.. О чем речь? Цитата:
Если ты говоришь про что то другое, то я тебе уже приводил пример, как метод в прототипе (но не созданный динамично) получает доступ к приват свойствам. Цитата:
Последний раз редактировалось riden; 30.06.2008 в 06:53. |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
![]() А общественность, если приглядитесь, "бунтует" странно: кроме вас вроде никто не решил отметится эпохальным заявлением, что AS1 - это не ООП язык (в этой части топика). Цитата:
)Вопрос был не к вам. Но мне понятно желание __ets скипнуть этот вопрос и ваше желание не отвечать на него. ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Лично я уже давно все высказал здесь и полемизировать вы тут можете до посинения, но к знаменателю никто не придет, это уже очевидно. UPD: Таки нашел вопрос: Цитата:
Последний раз редактировалось etc; 30.06.2008 в 10:28. |
|
|||||
|
Modus ponens
|
>> Сколько тебе раз еще говорить про this? this - это указатель на объект активации.
курим мануал. ответ простой: нет. указатель на объект активации - argumetns.caller >> Ну так... ты не то что не смог обратистя к приватному методу - возвращает undefined, я вообще не понимаю на что ты расчитывал рассчитывал получить undefined. получил то, на что рассчитывал. Т.е. функция не является методом, пому, что другой метод не смог получить к ней доступ >> Функция локальная может видеть глобальные свойства. мне не не интересны в данном контексте глобальные свойства, мне нужны только свойства объекта, чьим методом эта функция должна быть. Опять же, она их не видит. >> В AS3 функции имеют более узкое назначение и применение ложь =) >> Методы обяъявленные позже. Тоесть динамические - так? Не вижу никакой связи с временем объявлении метода и тем будет ли он статическим или динамическим. >> Ну и почему методы созданные на этапе исполнения(то есть когда создаются экземпляры классов) (пускай даже на временной диаграме) должны иметь доступ к приват-свойствам класса? Это является обязательным атрибутом метода, иначе это не метод. >> вне тела класса. Вы путаете конструктор класса и сам класс. >>> Функцию объявленную таким образом можно вызвать с разными областями >>>видимости используя call и apply. >> Вызовите приват метод из тела другого класса.... Где в моем утверждении сказано, что можно вызвать из другого класса? Я говорю, что ее можно вызвать, например, из конструктора класса, но при этом определить ее область видимости не такой, какая должна быть у метода. ЗЫ. То как я понимаю метод и приватный метод я описал в "тезисах" в предыдущем сообщении. Если вы считаете, что моя отправная точка не верная - тогда продолжать дискуссию не имеет смысла т.как дискуссия не может быть продуктивной если тезисы дискутирующих противоречивы.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 30.06.2008 в 13:50. |
|
|||||
|
Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
|
Внесу и я свои 5 копеек по поводу пабликов/приватов
Создание локальных функций и ссылок на них внутри конструктора класса никак не может быть созданием методов. В первую очередь, как было справедливо замечено, из-за области видимости. Как я догадываюсь, смутить умы может некоторая похожесть организации кода AS1: с AS2: и AS3: Вот только function AS1Class() {..} является не телом класса, а конструктором. Создавать в конструкторе методы - где вы такое видели? В AS1 методы создавались через prototype: И вот такие методы нормально сделать приватными мне не представляется реальным.
__________________
...Тебе страшно? Мне - нет. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|