![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Прототип ваш не поможет, ибо экземпляров Class1 может быть больше одного. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Какие еще вопросы? Видимость есть, обращение есть, наследование есть... что еще надо то?
__________________
видеоигры - высший вид искусства |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Приватные методы хочу. Покажите и чтобы ещё работали нормально. Или честно скажите, что не знаете.
|
|
|||||
|
Регистрация: 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. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
![]() Шах: //конструктор класса
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?? Что-то не так ;)
![]() |
|
|||||
|
Регистрация: 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
__________________
видеоигры - высший вид искусства |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Однако. Есть простой способ, сделать метод недоступным ниоткуда, кроме как из своего класса (экземпляра класса). Тут выше, правда, тут же начали возмущаться, что это не приватный метод, т.к.: - он ведет себя не как в AS3 - функция - это не метод ![]() - this ОБЯЗАН указывать на один и тот же объект... - и собственно вообще, нормально рабочие приватные методы - это как в AS3 Меня такой разговор удивляет. Есть способ сделать метод доступным только из данного класса. Есть или нет? Есть. Вы можете такой метод назвать хоть валенком - кто против? Разве изменит это тот факт (который так неохото признать некоторым), что AS1 - это язык ООП? Не изменит. Гурский вообще прямо пишет, что объявление функции внутри другой функции - один из ходов ООП. __etc пишет, что хочет "нормально работающих приватных методов". Позвольте спросить, в чем их "нормальность"? И самое главное - для КАКОЙ ЦЕЛИ их сделали приватными? Последнее важно. Ведь если мы достигнем цели, значит метод (пусть с презрением трижды обозванный "псевдо") существует и эффективен. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Не прокатит, pa — ссылка на самого себя, зачем вам ещё одна? И функции методами от этого не стали.
Цитата:
Последний раз редактировалось etc; 29.06.2008 в 22:28. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
Цитата:
__________________
видеоигры - высший вид искусства |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Угу. И разные способы доступа к этим приватам, причем надо постоянно в голове держать, где можно использовать this, а где нельзя. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|