Цитата:
|
И как вы эту «приватную» переменную будете использовать в других методах?
|
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] - паблик метод: свойство созданное в прототипе,
//в теле класса и ссылающееся на локальную функцию