![]() |
2 Inils: это здесь причем. Этот код я совершенно к другому вопросу привел. Нет конечно.
А приватный метод вот - pMetA Код:
function Class1(){Цитата:
argumetns.callee - возвращает не объект активации, а определение функции, короче ссылается на саму функцию. А объект активации, как я уже писал - это объект который вызывает функцию. Код функции, например выполняется при использовании оператора new Func, при создании экземпляра класса(функции). Вот так будет правильно: Код:
function Class1(a){Код:
function func(){Цитата:
Я называю локальную функцию в prototype-based OOP AS1 - приватным методом. Разницу чувствуете? |
>> Вы хотите вызвать приватный метод вне тела класса? Помилуйте, но это не возможно. Ни вне тела класса, ни на этапе исполнения...
Да, я хочу вызвать приватный метод и увидеть как компайлер, ну или на худой конец дебаггер расскажет мне об ошибке =) Это логичное и ожидаемое поведение приватного метода. Т.е. метод есть? - да есть. Вызвать можно? - нет, нельзя. А то получается, я взял ваш класс, а то, как вы форматируете код противоречит моим религиозным принципам и смотреть в него я не хочу :) . АПИ к вашим классам нету... и вот мне приходит в голову... а не создать ли мне публичный метод у вот этого класса - и кто мне скажет нет? Вполне легитимное желание =) Но, в зависимости от того, как вы реализовали ваш псевдо-приватный метод, мой вновь созданый либо его уничтожит, либо сам не будет работать - что приведет меня в глубокое замешательсво, и мне прийдется наплевав на религиозные принципы взять и переписать ваш класс =) От вас не требовался "prototype-based OOP AS1 - приватным метод". Нужен просто ООП приватный метод, без довесок в виде prototype-based =) ЗЫ. на протяжении этой дискусии я не извращался (хотя, правды ради, готов признать, что иногда я это делаю :D ) С самого моего первого поста я последовательно, ни разу не отказываясь провожу одну и ту же мысль, просто с каждым разом освещая другие ее аспекты, которые, возможно, были упущены из виду другими дискутантами. Мое убеждение остается таким же, каким и было: в АС1 приватных методов не существует, но существуют определенные воркараунды позволяющие добиться сходной функциональности, вместе с тем, каждый воркараунд имеет свои недостатки, справится с которыми не представляется возможным в силу отсутствия необходимого инструментария. Да, и еще, вы путаете arguments.callee и arguments.caller. Но эти ссылки могут указывать на один и тот же объект только в случае рекурсивного вызова функции. Во всех остальных случаях callee (дословно "вызываемый") указывает на текущую функцию, а caller (дословно "вызывающий") указывает на функцию, которая текущую функцию вызвала. И обе эти ссылки только случайно могут совпасть с this текущей функции т.как прямо с этим не связаны. |
Цитата:
К тому же представления о ООП в AS1 здесь оказались не четкими... Ведь Функция AS1 - играет роль класса, и тела класса. Вы же по прежнему сравниваете два ООП, я этого не делал. Пост - #333 Цитата:
Цитата:
Цитата:
Заметьте принципиальную разницу, я говорю только об AS1, не сравниваю языки. Свою позицию относительно AS3 я уже выразил в посте #333. То есть вы мне пытаететсь доказать то, что я и так знаю. Все это не ко мне... При попытках сравнивать языки, ООП, вопросов типо "AS3 оопэшнее, лчше, правильней...", и пр. возвращайтесь к посту 333 и читайте, читайте, читайте... |
Вот, на мой взгляд более приемлимий вариант приватного метода. Но все же у него есть 2 недостатка:
- в конструкторе его нельзя вызвать как this.privateMethod(); - из-за того, что вотчить _global невозможно, нельзя запретить переписать весь класс вместе с методом. Код:
function TClass () { |
>> Ничего не путаю, я пишу о том что такое объект активации функции, и что к нему не имеет отношение arguments.callee (ну и caller).
В посте #381 вы их перепутали, вам говорили про caller, а вы ответили про callee. >> Это то же можно реализовать, только это будет делать не компилятор, а вы, или сам класс, можно создать специальный метод. Именно это и будет значить, что в языке такой конструкции нет. Точно так же, как нет полной поддержки матричной трансформации - и тем не менее 3д движков хватает. Я не сравниваю языки, я сравниваю 1 язык АС1 с эталоном. В этом и заключается суть нашей дискуссии. Какую роль играет функция в АС1 - не имеет отношения к сути вопроса. Мы сравниваем конструкцию типа "класс" с эталоном описаным средствами не зависящими от реализации в любом конкретном языке. |
riden, повторю за остальным, возможно слегка понятнее:
this - пространство относительно которого вызывается функция (никаким образом не связано с "объектом активации функции"). arguments.caller - функция, которая вызвала текущую (вот пространство данной функции и будет "объектом активации функции"). arguments.callee - текущая функция (обычно используется для того, что бы хоть как-то поймать анонимную функцию). |
riden, вы уже давно ведетесь на уловки etc и пытаетесь переписать АС3 на АС1. С таким же успехом я могу доказать, что АС3 не ООП язык хотя бы потому, что в нем нет inline методов. Я перешел на АС3 совсем недавно и мне совсем не интересно изучать старую технологию. Но положение дел в этой теме меня совсем не устраивает, и я попытаюсь сам доказать, что АС1 - ООП язык. АС1 использует частный случай ООП - Прототипное_программирование. Так или иначе ООП предусматривает три основных парадигмы, рассмотрим каждую из них:
1) Инкапсуляция - способ скрыть внутреннее исполнение от внешней обертки Код:
function Base(){Код:
function Extends() {Код:
function Extends2() { |
Яски, а где в ООП написано, что должны быть inline методы? Вы кажется путаете тёплое с мягким :)
|
Цитата:
Код:
function Class1(a){Код:
function func(){ |
riden, бугого. я пошёл отсюда пока мне нилс плюс не влепил.
P.S.: вам надо либо изучить парочку толковых словарей (пример: http://slovari.yandex.ru/dict/ushakov ), либо написать свой. ибо как я понял Вас тут все не понимают :) |
| Часовой пояс GMT +4, время: 14:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.