Цитата:
Сообщение от riden
Именно про это я и писал, уже давно: "доступ к переменным(свойствам) внешней функции-класса)".
Можно так:
 Код:
function Class1(){
this.a="for __etc";
var link2this=this;
function pMet(){trace(link2this.a);}
this.met=function(){pMet();}
}
var o1=new Class1();
o1.met();
Можно так:
 Код:
function Class2(){
var a = "for __etc"; //приват свойство
function pMet(){
//вуаля
trace(this.a);//:) - Вы так рвались к this
}
pMet();//вызов объектом-функции локальной функции pMet
//нужно для открытия области видимости :)
}
var o2=new Class2();
Вы конешно напишите, что это не правильно... Но суть в реализации инкапсуляции, и она есть. Все остальное что вы скажите, я и так знаю (и сам это знаю) - #333
|
Боже мой, опять чертов костыль-ссылка. Давайте задам вопрос прямо: вы знаете, что такое call и apply? Не нужны мне приватные свойства, я их и без this получу, он мне не нужен для этого. Мне нужны
публичные свойства
экземпляра класса получить из this, без ссылки типа link2this. Вот код:

Код:
function Class1() {
this.a = 10; // _публичное_ свойство
function privateMethod() {
trace(this.a); // хочу, чтобы вывело 10
}
this.publicMethod = function() {
privateMethod();
}
}
o = new Class1();
o.publicMethod();
Напишите или исправьте вариант так, чтобы работало this.a в приватном методе без использования ссылок типа link2this. Заодно познакомитесь с новым (судя по всему) для вас методами в AS1 (и вы наконец поймете, может быть, о чем я говорил всю дорогу) и мы тихо-мирно закроем вопрос по поводу приватов.