Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Битва гигантов: AVM1 vs. AVM2. Спешите видеть! Только у нас! (http://www.flasher.ru/forum/showthread.php?t=113128)

wvxvw 30.06.2008 01:04

Код:

function Class1(){
        var pa = this;
        this.a = 4;
        function pMetA(){
                pa.a=10;
        }
        function pMetB(){
                Class1.prototype.propFor__etc = "no more __etc";
        }
        function pmet1(){
                pMetA();
        }
        function pmet2(){
                trace("do pmet2");
        }
        function pmet3(){
                pMetB();
        }
        this.met1=pmet1;
        this.met2=pmet2;
        this.met3=pmet3;
        Class1.prototype.met4 = pmet1;
        Class1.prototype.propFor__etc = "for__etc";
}
var c = new Class1();
c.pMetA = function(){trace("doing some funn stuff here")};
c.pMetA();

Это ваш "кхм... приватный-то метод?" :D
При чем тут внешние функции? я вполне себе легитимно создал метод у этого класса, никакую внешнюю функцию я не использовал =)
Код:

function Class1(){
        var pa = this;
        this.a = 4;
        function pMetA(){
                pa.a=10;
        }
        function pMetB(){
                Class1.prototype.propFor__etc = "no more __etc";
        }
        function pmet1(){
                pMetA();
        }
        function pmet2(){
                trace("do pmet2");
        }
        function pmet3(){
                pMetB();
        }
        this.met1=pmet1;
        this.met2=pmet2;
        this.met3=pmet3;
        Class1.prototype.met4 = pmet1;
        Class1.prototype.propFor__etc = "for__etc";
}
Class1.prototype.ImLookin4ThePrivateMethod = function(){
        trace("Where in God's name did you put it? " + this.pMetA);
}
var c = new Class1();
c.ImLookin4ThePrivateMethod(); // output: Where in God's name did you put it? undefined

=)

riden 30.06.2008 01:07

Вы задрали со своими фишками. Вы переопределили метод в объекте, создали в этом объекте новый метод. А для запрета переопределения существует ASSetPropFlags!
Создайте новый экземпляр класса и увидите, что никуда pMetA() не делся.

wvxvw 30.06.2008 01:12

Я. Пишу. Часто. Вне тела класса. Мне так нравися!
Я создаю неймспейсы в отдельных файлах, в которых вообще нет упоминаний о классе.
Я пишу статические константы типа номер версии проэкта в отдельном файле, в котором нет и упоминания о классе.
Я пишу переменные инициализаторы вне тела класса-синглтона чтобы сделать их недоступными другим классам.
Я пишу служебные прокси классы вне тела класса - их просто больше негде писать =)
Я пишу дополнительные служебные классы вне тела класса если не могу наследовать 1 класс от двух разных, а очень нужно =)
И все это ООП! :D

Дерут, простите... это что-то из зоологии =)
Я с таким же успехом могу и в прототипе его удалить переназначить, и ничто мне не помешает использовать все тот же ASSetPropFlags для этого =)

riden 30.06.2008 01:26

Создание нескольких классов в одном файле, вы называете "пишу вне тела класса". Я могу задать вам такой же тупой вопрос. Попробуйте из вспомогательного класса, получить доступ в тело главного класса (причем к паблик, интернал свойствам, а не приват). Так вы никогда такого не зделаете без создания экземпляров классов. В AS1 - также.
По поводу вашего поста, могу лишь отослать к своему посту - #333
Цитата:

И все это ООП!
Значит в AS1 - не ООП? Логично.
Что вы мне пытаетесь доказать... Я сам сижу на AS3... что ООП AS3 лучше? - я итак это знаю...

KidsKilla 30.06.2008 01:31

ад кромешный. от терминогогии "локальная фцнкция" или "приватный метод" суть не меняется. наружу видно только то, что ты хочешь дать. при чом тут ASSetPropFlags??? при чем тут метаязыки?
от того что кто-то в своё время недоучил ас1 он хуже не становится... всё то же и про ас3...

riden 30.06.2008 01:39

Цитата:

var c = new Class1();
c.pMetA = function(){trace("doing some funn stuff here")};
c.pMetA();
Вы не создали метод у класса, а создали у объекта. При чем тут этот бред?
Цитата:

Я с таким же успехом могу и в прототипе его удалить переназначить, и ничто мне не помешает использовать все тот же ASSetPropFlags для этого =)
Использование ASSetPropFlags? - на здаровье. Только зачем ломать атрибуты некой библиотеки. Скажем некого фреймворка? Вы станите переписывать библиотеку на АС3 меняя set на get и пр. издевательства?
И здесь тоже самое.

wvxvw 30.06.2008 01:41

Создание нескольких классов в одном файле, вы называете "пишу вне тела класса". Я могу задать вам такой же тупой вопрос. Попробуйте из вспомогательного класса, получить доступ в тело главного класса (причем к паблик, интернал свойствам, а не приват). Так вы никогда такого не зделаете без создания экземпляров классов. В AS1 - также.
>> А разве я утверждал, что это возможно? - нигде и ни разу =)
В АС1 даже аналога нет - не знаю с чем вы сравниваете =)


Значит в AS1 - не ООП? Логично.
>> Нет, не логично, я еще раз вам напоминаю, я ни единого слова не сказал про ООП в АС1 - это ваши фантазии =)

Что вы мне пытаетесь доказать... Я сам сижу на AS3... что ООП AS3 лучше? - я итак это знаю...
>> Я вам пытаюсь доказать, что приватных свойств в АС1 не существует. Вы уверенно уходите от признания этого факта =)

Код:

function Foo() {
        this.testMethod = function() {
                trace("Kiddin me, rrrrright?");
        }
        this.toString = function() {
                return "[Foo]";
        }
}
Foo = function () {
        this.testMethod = function() {
                trace("Me cool :)");
        }
        this.toString = function() {
                return "[Not Foo]";
        }
}
var f = new Foo();
f.testMethod();

Вот, пожалуйста =) и нет больше такого метода =)

riden 30.06.2008 01:47

2 KidsKilla:
Цитата:

при чом тут ASSetPropFlags???
Да не причем... Я как то не прасек, что wvxvw не в тему тупо создал новый метод в объекте с названием приватного.
Но если бы он так сделал с паблик методом... То есть реально бы совершил переопределение ( а он это и хотел показать) - тогда, можно посоветовать только ASSetPropFlags.

riden 30.06.2008 01:51

Цитата:

Я вам пытаюсь доказать, что приватных свойств в АС1 не существует. Вы уверенно уходите от признания этого факта =)
2 wvxvw:
Цитата:

Сообщение от riden
#316 - чем метод pMetA() не приватный?
Получите доступ к pMetA не из тела родного класса, а потом утверждайте подобную чушь

Кстати то, а вы сами понимаете смысл атрибута private в AS3?
ОФФТОП/: у меня сто сообшений:eek:, с 50 с чем-то нафлудил за день практически/ОФФТОП

KidsKilla 30.06.2008 01:54

Цитата:

Сообщение от riden (Сообщение 748795)
2 KidsKilla:

Да не причем... Я как то не прасек, что wvxvw не в тему тупо создал новый метод в объекте с названием приватного.
Но если бы он так сделал с паблик методом... То есть реально бы совершил переопределение ( а он это и хотел показать) - тогда, можно посоветовать только ASSetPropFlags.

да я не к тебе, а в воздух -- кто его затронул и зачем, не понятно...

wvxvw, "Я вам пытаюсь доказать, что приватных свойств в АС1 не существует." попробуйте доказать что земля квадратная. тоже нормальное занятие...


Часовой пояс GMT +4, время: 17:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.