Цитата:
|
Сообщение от wvxvw
Class1.prototype.ImLookin4ThePrivateMethod = function(){
trace("Where in God's name did you put it? " + this.pMetA);
}
var c = new Class1();
c.ImLookin4ThePrivateMethod(); // output: Where in God's name did you put it? undefined
|
Сколько тебе раз еще говорить про this? this - это указатель на объект активации. Ты уже делал так, я тебе все говорил... Все мимо? Ты применяешь this -внутри локальной функции...
Ну так... ты не то что не смог обратистя к приватному методу -
возвращает undefined, я вообще не понимаю на что ты расчитывал, применяя указатель this внутри локальной функции без объекта активации (то есть ни создан ее экземпляр функции, ни вызов функции в теле класса, что бы образовалось "область видимости" и появилась ссылка на указатель) - если бы ты это сделал, ты бы получил this, но так как у объекта активации(объект-экземпляр этой функции или сама функция) нет свойства pMetA, то все равно бы было undefined.
На pMet - ничего не ссылается, как ты собираешся к ней доступ получить? К чему эти танцы с бубном? Выше приведенная тобой функция может получить ссылку на this класса (а не функции, как у тебя)... И что дальше? Ты сможешь обратится к свойствам класса (то есть паблик), а все что не свойства класса, а находится внутри - приват.
Короче - не связный бред... не в тему.
Далее...
Цитата:
Код:
function Foo() {
this.testMethod = function() {
trace("Kiddin me, rrrrright?");
}
this.toString = function() {
return "[Foo]";
}
}
Foo = function () {
this.testMethod = function() {
trace("Me cool ");
}
this.toString = function() {
return "[Not Foo]";
}
}
var f = new Foo();
f.testMethod();Вот, пожалуйста =) и нет больше такого метода =)
|
Это что? Какого метода нет? И при чем здесь наличие приватных методов в классе, и возможность доступа к этим методам?
Вернемся же к теме (облегченный вариант):

Код:
function Class1(){
//паблик свойство
this.a = 4;
var pa = this;//ссылка
//приват метод изменяте паблик свойство
function pMetA(){pa.a=10;}
//паблик методы
function pmet1(){pMetA();}
function pmet2(){trace("do pmet2");}
this.met1=pmet1;//паблик метод
this.met2=pmet2; //паблик метод
}
////////////////////////////////////////
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