Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.06.2008, 21:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 311  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от riden Посмотреть сообщение
2 etc потому что там куча лишнего кода, уберите лишний трейс. Метод met1 вызывается два раза. Этот код на все случаи жизни, на требования которыми в меня напрягли сегодня.
Чтобы больше не напрягаться, просто скажите, что вы не знаете, как сделать псевдо-приватность на AS1 и все тихо разойдутся.

Прототип ваш не поможет, ибо экземпляров Class1 может быть больше одного.

Старый 29.06.2008, 21:25
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 312  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
Какие еще вопросы? Видимость есть, обращение есть, наследование есть... что еще надо то?
__________________
видеоигры - высший вид искусства

Старый 29.06.2008, 21:27
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 313  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от riden Посмотреть сообщение
Какие еще вопросы? Видимость есть, обращение есть, наследование есть... что еще надо то?
Приватные методы хочу. Покажите и чтобы ещё работали нормально. Или честно скажите, что не знаете.

Старый 29.06.2008, 21:38
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 314  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
2 __etc
Код:
function Class1(){
// приват метод
function pMetA(){
pmet2; //использует паблик метод объявленный "после", требование 2 wxvxw исчерпано
}
function pMetB(){
Class1.prototype.propFor__etc = "not more __etc"; // приватный метод изменяет паблик свойство
}
//паблик методы
function pmet1(){
pMetA();
}
function pmet2(){
trace("do pmet2");
}
function pmet3(){
pMetB();
}

this.met1=pmet1;//паблик метод, свойство по значению
this.met2=pmet2; //паблик метод объявленный после
Class1.prototype.met3 = pmet3; // требование 1 wxvxw исчерпано, метод в прототипе
Class1.prototype.propFor__etc="for_etc"; // паблик свойство по ссылке, наследуется подклассами
}

////////////////////////////////////////
var obj = new Class1();
//obj.met2();//do pmet2
//obj.met3();
trace(obj.propFor__etc);//for_etc
obj.met3();
trace(obj.propFor__etc);//not more __etc
__________________
видеоигры - высший вид искусства


Последний раз редактировалось riden; 29.06.2008 в 21:40.
Старый 29.06.2008, 21:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 315  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от riden Посмотреть сообщение
2 __etc
Код:
function Class1(){
// приват метод
function pMetA(){
pmet2; //использует паблик метод объявленный "после", требование 2 wxvxw исчерпано
}
function pMetB(){
Class1.prototype.propFor__etc = "not more __etc"; // приватный метод изменяет паблик свойство
}
//паблик методы
function pmet1(){
pMetA();
}
function pmet2(){
trace("do pmet2");
}
function pmet3(){
pMetB();
}

this.met1=pmet1;//паблик метод, свойство по значению
this.met2=pmet2; //паблик метод объявленный после
Class1.prototype.met3 = pmet3; // требование 1 wxvxw исчерпано, метод в прототипе
Class1.prototype.propFor__etc="for_etc"; // паблик свойство по ссылке, наследуется подклассами
}

////////////////////////////////////////
var obj = new Class1();
//obj.met2();//do pmet2
//obj.met3();
trace(obj.propFor__etc);//for_etc
obj.met3();
trace(obj.propFor__etc);//not more __etc
Ну да
Шах:

Код:
//конструктор класса
function Class1() {
	// приват метод
	function pMetA() {
		pmet2;//использует паблик метод объявленный "после", требование 2 wxvxw исчерпано
	}
	function pMetB() {
		Class1.prototype.propFor__etc = "not more __etc";// приватный метод изменяет паблик свойство
	}
	//паблик методы
	function pmet1() {
		pMetA();
	}
	function pmet2() {
		trace("do pmet2");
	}
	function pmet3() {
		pMetB();
	}

	this.met1 = pmet1;//паблик метод, свойство по значению
	this.met2 = pmet2;//паблик метод объявленный после
	Class1.prototype.met3 = pmet3;// требование 1 wxvxw исчерпано, метод в прототипе
	Class1.prototype.propFor__etc = "for_etc";// паблик свойство по ссылке, наследуется подклассами
}

////////////////////////////////////////
var obj = new Class1();
//obj.met2();//do pmet2
//obj.met3();
trace(obj.propFor__etc);//for_etc
obj.met3();
trace(obj.propFor__etc);//not more __etc
o = new Class1();
trace(o.propFor__etc); // for_etc, ok
trace(obj.propFor__etc); // for_etc, WTF?? Что-то не так ;)

Старый 29.06.2008, 22:18
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 316  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
А так прокатит?
Код:
function Class1(){
// приват метод
var pa = this;//ссылка
this.a = 4;
//приват метод изменяте паблик свойство
function pMetA(){
pa.a=10;
}
function pMetB(){
Class1.prototype.propFor__etc = "not 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; // требование 1 wxvxw исчерпано, метод в прототипе
Class1.prototype.propFor__etc="for__etc"; // паблик свойство по ссылке, наследуется подклассами
}

////////////////////////////////////////
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
__________________
видеоигры - высший вид искусства

Старый 29.06.2008, 22:25
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 317  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
chingachgoog, О! великий АС1-гуру поведуйте мне, как сделать метод приватным.
BlooDHounD, вы крайне невнимательны. Я сказал, что считать, что все методы в AS - паблики - это не верно. Но я не говорил, что научу ваc делать приватные методы на AS1.
Однако. Есть простой способ, сделать метод недоступным ниоткуда, кроме как из своего класса (экземпляра класса).
Тут выше, правда, тут же начали возмущаться, что это не приватный метод, т.к.:
- он ведет себя не как в AS3
- функция - это не метод
- this ОБЯЗАН указывать на один и тот же объект...
- и собственно вообще, нормально рабочие приватные методы - это как в AS3

Меня такой разговор удивляет. Есть способ сделать метод доступным только из данного класса. Есть или нет? Есть.
Вы можете такой метод назвать хоть валенком - кто против? Разве изменит это тот факт (который так неохото признать некоторым), что AS1 - это язык ООП? Не изменит. Гурский вообще прямо пишет, что объявление функции внутри другой функции - один из ходов ООП.

__etc пишет, что хочет "нормально работающих приватных методов". Позвольте спросить, в чем их "нормальность"? И самое главное - для КАКОЙ ЦЕЛИ их сделали приватными? Последнее важно. Ведь если мы достигнем цели, значит метод (пусть с презрением трижды обозванный "псевдо") существует и эффективен.

Старый 29.06.2008, 22:26
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 318  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Не прокатит, pa — ссылка на самого себя, зачем вам ещё одна? И функции методами от этого не стали.

Цитата:
Сообщение от chingachgoog Посмотреть сообщение
__etc пишет, что хочет "нормально работающих приватных методов". Позвольте спросить, в чем их "нормальность"? И самое главное - для КАКОЙ ЦЕЛИ их сделали приватными? Последнее важно. Ведь если мы достигнем цели, значит метод (пусть с презрением трижды обозванный "псевдо") существует и эффективен.
Кто-то недавно заявлял, что приваты есть и все прекрасно. Но что-то пока не очень прекрасно. Сказали, что есть классы, сказали, что есть и приваты. Ну и я вижу пока потуги уже на третьей или четвертой странице подряд в реализации оных.


Последний раз редактировалось etc; 29.06.2008 в 22:28.
Старый 29.06.2008, 22:32
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 319  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
Цитата:
Не прокатит, pa — ссылка на самого себя, зачем вам ещё одна? И функции методами от этого не стали.
Как зачем, что бы иметь доступ к классу, к объекту активации. Я же говорил, что у каждой функции в AS1 свой this, функция имеет тут более широкое значение. Поэтому использование ссылки - вполне уместно.

Цитата:
И функции методами от этого не стали
Однако работает. И мы имеем приватные и паблик свойства (методы).
__________________
видеоигры - высший вид искусства

Старый 29.06.2008, 22:37
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 320  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от riden Посмотреть сообщение
Я же говорил, что у каждой функции в AS1 свой this, функция имеет тут более широкое значение. Поэтому использование ссылки - вполне уместно.
Вполне неуместно, это ж надо такое придумать, ссылку на самого себя? Зачем, если есть this? Про «свой this» бросьте, вы просто так и не сделали из функций методы.

Цитата:
Сообщение от riden Посмотреть сообщение
Однако работает. И мы имеем приватные и паблик свойства (методы).
Угу. И разные способы доступа к этим приватам, причем надо постоянно в голове держать, где можно использовать this, а где нельзя.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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