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

Регистрация: Jun 2005
Сообщений: 147
2 Inils: это здесь причем. Этот код я совершенно к другому вопросу привел. Нет конечно.
А приватный метод вот - pMetA
Код:
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
2 __etc:
Цитата:
Вы создали свойство в анонимной области видимости, после этого приплетаете объект активации (arguments.caller, вы знаете, что это такое?), который вообще отношения к ней не имеет.
Нет, это вы Гурского не понимаете.
argumetns.callee - возвращает не объект активации, а определение функции, короче ссылается на саму функцию. А объект активации, как я уже писал - это объект который вызывает функцию. Код функции, например выполняется при использовании оператора new Func, при создании экземпляра класса(функции).
Вот так будет правильно:
Код:
function Class1(a){
this.a=a;
	trace (this); //[object Object] //указатель на obj - экземпляр класса Class1
	function localFunc(){
		this.b=2;
		trace(this); //[type Object]
		trace(this.arguments);//аргумент функции внешней
					//это подтверждает что объект активации - внешняя функция (Class1)
		trace(this.a); //undefined
		trace(this.b); //2
	}
	localFunc(); // вызов локальной функции, иначе this ничего не будет возвращать
	//this.met = localFunc;
}
//Class1();
var obj = new Class1("аргумент функции внешней");
//c.met();
/*Выводит:
[object Object] //this
[type Object] //this
undefined
аргумент функции внешней //this.arguments
2 //this.b
*/
Ну и также такой пример можно привести:
Код:
function func(){
	trace(this);
}
func();//_level0
obj = new func();//[object Object]
2 wvxvw:
Цитата:
Что касается нашего спора: я могу согласится называть локальную функцию методом, но я всего 1 человек имеющий мало веса в огромнейшем программерском сообществе...
Никто не называет локальную функцию - методом, хватит извращатся wvxvw.
Я называю локальную функцию в prototype-based OOP AS1 - приватным методом. Разницу чувствуете?
__________________
видеоигры - высший вид искусства


Последний раз редактировалось riden; 30.06.2008 в 21:17.