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

Регистрация: Jun 2005
Сообщений: 147
Цитата:
И как вы эту «приватную» переменную будете использовать в других методах?
pvar2 используется "в других методах".

Код:
var pvar1:String; pvar1 = "bla-bla";//приватное свойство
var e:Boolean; e=true;
var g:Number;g=4;

//конструктор класса
function Class1(a, b){
var pvar2:Number; pvar2 =1;//приватное свойство
function pMet(){}//приватный метод
function pmet1(){
// pvar2 доступна в паблик методе
}

this.a = a;//паблик свойство
this.b = b;//паблик свойство
this.e = e;//паблик свойство

this.met1=pmet1;//паблик метод, свойство по значению
this.met2=pmet2; //паблик метод, свойство по ссылке
Class1.prototype.met3 = pmet1;// создание метода через прототип, внутри тела класса
}
function pmet2(){
// если нужна функция вне конструктора...
// хотя она уже не будет копироватся вместе с объектом (новым экземпляром), на нее будут ссылатся свойства класса.
//доступно приват свойство pvar1
}
Class1.f="static prop" // статическое свойство
Class1.prototype.g=g; // свойство по ссылке, наследуется подклассами
Цитата:
И с чего вы взяли, что переменная, объявленная вне «конструктора» вашего чудо-класса на AS1 будет приватной?
pvar1 - для функций вне "тела класса". Она приватная для класса Class1. Но ведь не обязательно функцию вне класса писать (а значит и переменные). Ведь в AS1 - функция - это и есть объект активации, играет роль и конструктора и тела класса. Так что не вижу противоречий.
Код:
var ob = new Class1(2,3);
///traces
trace(ob.a);//2
trace(ob.e);//true
trace(ob.pvar2);//undefined - нет такого свойства у класса
trace(ob.pvar1); //undefined - нет такого паблик свойства
trace(ob.met3); //[type Function] - паблик метод: свойство созданное в прототипе, 
                      //в теле класса и ссылающееся на локальную функцию
__________________
видеоигры - высший вид искусства


Последний раз редактировалось riden; 29.06.2008 в 15:07.