![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
//конструктор класса
function Class1(a){
var pvar2:Number;//приватное свойство
this.a = a;//паблик свойство по значению
//приватный метод
function pMet(){
trace('я есть приватный метод класса '+this); // я есть приватный метод класса undefined
return Math.random()*a;
}
//паблик метод
function pmet1(){
return "Вот так я работаю "+pMet();
}
this.met1=pmet1;//паблик метод, свойство по значению
}
////////////////////////////////////////
var obj = new Class1(2);
trace(obj.met1()); //Вот так я работаю 0.312059603631496
|
|
|||||
|
Modus ponens
|
Если область видимости одинаковая у двух объектов - this у этих двух объектов обязан указывать на один и тот же объект - это азы понимания ОО. Вы спорите с аксиомами...
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
Еще раз... процетирую себя: Цитата:
__________________
видеоигры - высший вид искусства |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Если уж вы так не соглашаетесь относительно this, то расскажите (точнее, покажите) мне, каким образом я могу работать с публичными переменными данного класса внутри приватного метода pMet? |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
АС3 я знаю, не надо мне про "Азы" говорить. Что бы обратится к приватному свойству/методу в AS1 мне достаточно обратится к локальной переменной/функции. В AS1 совершенно другое значение функции, более широкое. У каждой функции свой this. Так что, что вы мне свою пургу несете про "азы". Вы будите мне доказывать, что прототипное ООП - вовсе не ООП? AS1 очень гибок это факт. А AS3 очень эффективен.
__________________
видеоигры - высший вид искусства |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
2 __etc
Цитата:
![]() Как?
__________________
видеоигры - высший вид искусства Последний раз редактировалось riden; 29.06.2008 в 20:08. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А, я уже вас напрягаю? Т. е. все-таки что-то не так?
![]() Давайте расставим все точки над i, не уходите от разговора: Ага, как мне изменить значение публичной переменной «a» в приватном методе pMet? Мне же не просто надо смотреть на переменную, а ещё и изменять её. |
|
|||||
|
Modus ponens
|
Цитата:
все сговорились и решили называть функцию с той же областью видимости, что и объект, в котором она была создана, методом. А вы как-то пропустили этот момент =)Т.е. посмотрите на это так: существует класс Функция, он может быть использован, как метод другого класса, но не обязан. Метод обязан быть функцией. Из этого следует, что не все функции - методы, но все методы - функции. То что вы создали не является методом, потому что не соответствует определению метода, но является функцией. Чтобы эта функция была методом она должна соответствовать следующим условиям: - она должна быть доступна любому другому методу объекта, чьим методом она является. (Ваша функция этому требованию не соответствует, т.как методы объявленные на прототипе класса не смогут к ней обратиться). - она должна быть в состоянии обратиться к любому другому методу класса, чьим методом она является. (Ваша функция не соответствует этому требованию, т.как любой метод / свойство объявленное после ее оъявления будут ей недоступны).
__________________
Hell is the possibility of sanity |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
Регистрация: Jun 2005
Сообщений: 147
|
Цитата:
function Class1(){
var pat;
this.at=34;
pat = this.at;
//приватный метод
function pMetA(){
trace(pat); // использует паблик свойство по ссылке
}
//приватный метод
function pMetB(){
pmet2; //использует паблик метод объявленный "после", требование 2 исчерпано
}
//паблик методы
function pmet1(){
pMetA();
}
function pmet2(){
trace("do pmet2");
}
this.met1=pmet1;//паблик метод, свойство по значению
this.met2=pmet2; //паблик метод объявленный после
Class1.prototype.met3 = pmet1; // требование 1 исчерпано
}
////////////////////////////////////////
var obj = new Class1();
obj.met2(); //do pmet2
obj.met3(); //34
2 __etc: Цитата:
__________________
видеоигры - высший вид искусства Последний раз редактировалось riden; 29.06.2008 в 20:59. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|