Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.06.2008, 05:21
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 1  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
Цитата:
Сообщение от 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
__________________
видеоигры - высший вид искусства


Последний раз редактировалось riden; 30.06.2008 в 05:41.
Старый 30.06.2008, 06:26
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 2  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
2 wvxvw:
Цитата:
Сообщение от wvxvw
По моему глубокому убеждению функция созданная в конструкторе класса не удовлетворяет ни одному из вышеперечисленных условий.
Цитата:
Сообщение от wvxvw
Т.как ее область видимости разнится с областью видимости класса, чьим методом она должна быть.
Функция локальная может видеть глобальные свойства. А в AS3 - иначе? Область видимости распространяется вверх по цепочке наследования. Так же как и в AS3.
Если вы подразумеваете под областью видимости вызов this из функции - то я вам уже десять раз говорил, что означает this, и что есть функция в AS1. Область видимости - это доступность свойст из метода, а не то что вы пишите. Вызвав this данной функции - вы получите ссылку на объект активации этой функции. Ну и что, что в AS3 подругому. AS3 - полностью ООП-й язык. В AS3 функции имеют более узкое назначение и применение.. О чем речь?

Цитата:
Сообщение от wvxvw
Методы объявленные позже на прототипе класса не имеют доступа к этой функции.
Да... похоже вы действительно не понимате приватность. Методы обяъявленные позже. Тоесть динамические - так? Где эти самые методы обявляются? Очевидно в теле другого класса. Так? Мы ведь про ООП говорим. Ну и что такое приват? Разве из другого класса мы должны получать доступ к приватным свойствам (для тебя, объект - набор свойств, если значение свойства - функция, то это метод; так что упрощенно все это называют свойствами, полями). Ну и почему методы созданные на этапе исполнения(то есть когда создаются экземпляры классов) (пускай даже на временной диаграме) должны иметь доступ к приват-свойствам класса? + в вашем случае, это всегда будет вне тела класса ("родного").
Если ты говоришь про что то другое, то я тебе уже приводил пример, как метод в прототипе (но не созданный динамично) получает доступ к приват свойствам.
Цитата:
Функцию объявленную таким образом можно вызвать с разными областями видимости используя call и apply.
Вызовите приват метод из тела другого класса, ну или пускай, раз в АС1, из области видимости диаграммы (хотя это уже не совсем ООП), где вы создаете экземпляр класса. pMetA - пост выше (код Class1)


Последний раз редактировалось riden; 30.06.2008 в 06:53.
Старый 30.06.2008, 13:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
>> Сколько тебе раз еще говорить про this? this - это указатель на объект активации.

курим мануал. ответ простой: нет. указатель на объект активации - argumetns.caller

>> Ну так... ты не то что не смог обратистя к приватному методу - возвращает undefined, я вообще не понимаю на что ты расчитывал

рассчитывал получить undefined. получил то, на что рассчитывал. Т.е. функция не является методом, пому, что другой метод не смог получить к ней доступ

>> Функция локальная может видеть глобальные свойства.

мне не не интересны в данном контексте глобальные свойства, мне нужны только свойства объекта, чьим методом эта функция должна быть. Опять же, она их не видит.

>> В AS3 функции имеют более узкое назначение и применение

ложь =)

>> Методы обяъявленные позже. Тоесть динамические - так?

Не вижу никакой связи с временем объявлении метода и тем будет ли он статическим или динамическим.

>> Ну и почему методы созданные на этапе исполнения(то есть когда создаются экземпляры классов) (пускай даже на временной диаграме) должны иметь доступ к приват-свойствам класса?

Это является обязательным атрибутом метода, иначе это не метод.

>> вне тела класса.

Вы путаете конструктор класса и сам класс.

>>> Функцию объявленную таким образом можно вызвать с разными областями
>>>видимости используя call и apply.
>> Вызовите приват метод из тела другого класса....

Где в моем утверждении сказано, что можно вызвать из другого класса? Я говорю, что ее можно вызвать, например, из конструктора класса, но при этом определить ее область видимости не такой, какая должна быть у метода.

ЗЫ. То как я понимаю метод и приватный метод я описал в "тезисах" в предыдущем сообщении. Если вы считаете, что моя отправная точка не верная - тогда продолжать дискуссию не имеет смысла т.как дискуссия не может быть продуктивной если тезисы дискутирующих противоречивы.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 30.06.2008 в 13:50.
Старый 30.06.2008, 14:53
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 4  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
Код:
var x = new(function z(){
	var private = 'private';
	this.public = 'public';
	this.meth = function(){
		return [private, this.public];
	}
})()
alert(x.private) // undefined
alert(x.public) // "public"
alert(x.meth()) // "private, public"
x.private = '123';
alert(x.meth()) // "private, public"
под описание
Цитата:
* Приватным является такой метод, который можно вызвать из любого другого метода объекта, чьим методом он является, но ниоткуда более.
* Обязательным атрибутом приватного метода является невозможность его переопределения / удаления из-за пределов объекта, чьим методом он является.
подходит.

Цитата:
Создавать в конструкторе методы - где вы такое видели?
какая разница? что от этого поменяется? это дело синтаксиса и не более.
__________________
Breakcore them all!

Старый 30.06.2008, 14:55
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от KidsKilla Посмотреть сообщение
Код:
var x = new(function z(){
	var private = 'private';
	this.public = 'public';
	this.meth = function(){
		return [private, this.public];
	}
})()
alert(x.private) // undefined
alert(x.public) // "public"
alert(x.meth()) // "private, public"
x.private = '123';
alert(x.meth()) // "private, public"
А где тут приватный метод?

Старый 30.06.2008, 22:24
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 6  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
riden, вы уже давно ведетесь на уловки etc и пытаетесь переписать АС3 на АС1. С таким же успехом я могу доказать, что АС3 не ООП язык хотя бы потому, что в нем нет inline методов. Я перешел на АС3 совсем недавно и мне совсем не интересно изучать старую технологию. Но положение дел в этой теме меня совсем не устраивает, и я попытаюсь сам доказать, что АС1 - ООП язык. АС1 использует частный случай ООП - Прототипное_программирование. Так или иначе ООП предусматривает три основных парадигмы, рассмотрим каждую из них:
1) Инкапсуляция - способ скрыть внутреннее исполнение от внешней обертки
Код:
function Base(){
	var text = function(){
		return 'private text'
	};
	this.method = function(){
		return text() + ' returned from public'
	};
};

var obj = new Base();

trace(obj.text()) // "undefined"
trace(obj.method()) // "private text returned from public"
2) Наследование - наследованный класс, использует код базового класса, добавив свою функциональность.
Код:
function Extends() {
	var base = new Base();
	this.method = base.method;
	this.method2 = function() {
		return "added method to base class";
	};
};

var obj2 = new Extends();

trace(obj2.text()) // "undefined"
trace(obj2.method()) // "private text returned from public"
trace(obj2.method2()) // "added method to base class"
3) Полиморфизм - наследованный класс переопределяет функиональность базового класса.
Код:
function Extends2() {
	var base = new Base();
	this.method = function() {
		return "this is " + base.method() + " of base class? No this overriden method off base class";
	};
};

var obj = new Base();
var obj2 = new Extends2();

trace(obj2.text()) // "undefined"
trace(obj2.method()) // "this is private text returned from public of base class? No this overriden method off base class
"
И чем проще код, тем сложнее допустить ошибку.


Последний раз редактировалось Яски; 30.06.2008 в 22:28.
Старый 01.07.2008, 10:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Яски, я прошу написать не по отдельности все принципы ООП, а все вместе, пример на AS3 я привел. Истинно объектно-ориентированным языком можно назвать тот язык, который позволяет на уровне языка реализовать три принципа ООП сразу вместе на парочке классов, а не по отдельности, причем, реализованных средствами самого языка, а не руками, как тут уже всю тему пытаются сделать.

В AS1 у вас этого не получится, подобную приватность не скрестить с наследованием, а полиморфизма в AS1 вообще нет ни в каком виде. AS1 вам позволяет думать в стиле ООП, но не дает вам средств работы с ним. Т. е. вы сами реализовываете наследование (ручками), сами реализовываете приватность (либо на уровне договоренности с самим собой, что некоторые методы извне вызывать нельзя), а полиморфизм держите в голове. А посему, AS1 — псевдо-ООП язык, не является истинно объектно-ориентированным, как и JavaScript.
Кстати, наследование реализуется не так, как вы написали, это вообще будет ручной труд по копированию методов от предка к наследнику. Для наследования у вас есть скрытые костыли языка в виде __proto__ и __constructor__.

riden, то, что у вас каша в голове, созданная товарищем Гурским, наглядно показывает перепутанные caller, про который я спрашивал и callee. Возьмите, хотя бы, Essential ActionScript 2.0, все станет просто и понятно. И потом, если вы не заметили, приемлимый вариант приватности уже привели (хотя мой вариант мне гораздо больше нравится, чем у wxvxw, потому что у меня функция не видна снаружи вообще).

Ваш объект активации, суть объект, в контексте которого вызывается функция, т. е. в его области видимости. При использовании кейворда new создается новая область видимости. В AS3 поведение иное, область видимости не изменяется, даже если присвоить ссылку на метод класса другому объекту. А в AS1/AS2 функция будет вызвана в области видимости того объекта, к которому она присвоена:

Код:
o = new Object();
o.toString = function() {
	return 'object o';
}
a = new Object();
a.toString = function() {
	return 'object a';
}
function test() {
	trace(this);
}
o.test = test;
a.test = test;
test(); // _level0
o.test(); // object o
a.test(); // object a
trace([test==o.test, test==a.test]); // true,true
В AS2 для предотвращения такого поведения был придуман класс Delegate, изменяющий (делегирующий) область видимости функции в нужную. Вам несколько раз намекали, что приватная функция должна работать в области видимости экземпляра класса, а не в иной. Присвоить приватную функцию экземляру вы не можете, потому что потеряется эта самая приватность, но вот вызывать функцию в контексте экземпляра вы могли, но не сделали этого, а завели ссылку на нужную область видимости, создавая дополнительные трудности из-за разного способа доступа к свойствам и методам. Да, и забудьте про «объекты активации», оперируйте понятием «область видимости», которое понимают программисты, а не Дмитрий Гурский. Надеюсь, я доходчиво описал то, о чем вы тут нам хотели рассказать. А поэтому, предлагаю двигаться дальше к вопросу объектно-ориентирован ли AS1 или нет.


Последний раз редактировалось etc; 01.07.2008 в 10:47.
Старый 01.07.2008, 13:47
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 8  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
Яски, а где в ООП написано, что должны быть inline методы? Вы кажется путаете тёплое с мягким
А кто вдруг решил, что в ООП обязательно должен быть this, что должны быть классы, множественное наследование. Например, в Си++ есть перегрузка операторов, но это дополнительная возможность, которой нет в истинном определении ООП.

Цитата:
Сообщение от __etc Посмотреть сообщение
А посему, AS1 — псевдо-ООП язык, не является истинно объектно-ориентированным, как и JavaScript.
Может на эту тему тоже поспорим?

Цитата:
Сообщение от __etc Посмотреть сообщение
Кстати, наследование реализуется не так, как вы написали, ... Для наследования у вас есть скрытые костыли языка в виде __proto__ и __constructor__.
Спасибо, я и не знал.

Цитата:
Сообщение от __etc Посмотреть сообщение
Яски, я прошу написать не по отдельности все принципы ООП, а все вместе, пример на AS3 я привел. Истинно объектно-ориентированным языком можно назвать тот язык, который позволяет на уровне языка реализовать три принципа ООП сразу вместе на парочке классов, а не по отдельности, причем, реализованных средствами самого языка, а не руками, как тут уже всю тему пытаются сделать.
Да, пожалуйста:

Код:
function IMyClass(){
	this.getRotation = function(){
		return 'abstract method'
	};
};

function MyClass() {
	this.__proto__ = IMyClass;
	
	this.angle = 0;
	
	var calculateValue = function () {
		this.angle = 2*Math.PI*Math.random();
	};
	this.getRotation = function() {
		calculateValue.call(this);
		return this.angle/Math.PI*180;
	};
};

function AnotherMyClass() {
	this.__proto__ = MyClass;

	this.getRotation = function() {
		var	rotation = this.__proto__.getRotation();
		return rotation/2;
	};
	this.getRadians = function() {
		return this.angle/2;
	}
};

var iMyClass = new IMyClass();
var myClass = new myClass();
var aMyClass = new AnotherMyClass();

trace(iMyClass.calculateValue()) // "undefined"
trace(iMyClass.getRadians()) // "undefined"
trace(iMyClass.getRotation()) // "abstract method"
trace(iMyClass.angle) // "undefined"

trace(myClass.calculateValue()) // "undefined"
trace(myClass.getRadians()) // "undefined"
trace(myClass.getRotation()) // "152.942357249558"
trace(myClass.angle) // "2.66934769976621"

trace(aMyClass.calculateValue()) // "undefined"
trace(aMyClass.getRadians()) // "1.3346738498831"
trace(aMyClass.getRotation()) // "102.746495101601"
trace(aMyClass.angle) // "3.58652926881432"
Даже немного компактнее получилось.

Как я уже говорил АС1 и JavaScript являются прототипными ООП. Что свойственно для языков программирования без жесткой типизации, в которых нельзя ввести определение класса. Если ,etcs, хочет называть все прототипные языки программирования "неистенными" это его право, но только вместе с приставкой ООП.


Последний раз редактировалось Яски; 01.07.2008 в 13:59.
Старый 01.07.2008, 14:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Яски Посмотреть сообщение
Может на эту тему тоже поспорим?
JavaScript такой же псевдо-ООП, как и AS1, нет разницы. Ещё раз говорю, что язык вам позволяет реализовывать ООП, куцое, правда. Но у него нет средств для обеспечения той же приватности или полиморфизма, эти вещи разработчик просто в голове держит и все.

Цитата:
Сообщение от Яски Посмотреть сообщение
Да, пожалуйста:

Код:
function IMyClass(){
	this.getRotation = function(){
		return 'abstract method'
	};
};

function MyClass() {
	this.__proto__ = IMyClass;
	
	this.angle = 0;
	
	var calculateValue = function () {
		this.angle = 2*Math.PI*Math.random();
	};
	this.getRotation = function() {
		calculateValue.call(this);
		return this.angle/Math.PI*180;
	};
};

function AnotherMyClass() {
	this.__proto__ = MyClass;

	this.getRotation = function() {
		var	rotation = this.__proto__.getRotation();
		return rotation/2;
	};
	this.getRadians = function() {
		return this.angle/2;
	}
};

var iMyClass = new IMyClass();
var myClass = new myClass();
var aMyClass = new AnotherMyClass();

trace(iMyClass.calculateValue()) // "undefined"
trace(iMyClass.getRadians()) // "undefined"
trace(iMyClass.getRotation()) // "abstract method"
trace(iMyClass.angle) // "undefined"

trace(myClass.calculateValue()) // "undefined"
trace(myClass.getRadians()) // "undefined"
trace(myClass.getRotation()) // "152.942357249558"
trace(myClass.angle) // "2.66934769976621"

trace(aMyClass.calculateValue()) // "undefined"
trace(aMyClass.getRadians()) // "1.3346738498831"
trace(aMyClass.getRotation()) // "102.746495101601"
trace(aMyClass.angle) // "3.58652926881432"
Даже немного компактнее получилось.
Мой трейс:

Цитата:
Сообщение от Flash CS3
undefined
undefined
abstract method
undefined
undefined
undefined
undefined
undefined
undefined
NaN
NaN
undefined
Не работает, вы не находите?

Цитата:
Сообщение от Яски Посмотреть сообщение
Как я уже говорил АС1 и JavaScript являются прототипными ООП. Что свойственно для языков программирования без жесткой типизации, в которых нельзя ввести определение класса.
Если рассматривать понятие ООП как более абстрактное, программирование с использованием понятия объектов, то тогда большинство языков объектно-ориентированные.


Цитата:
Сообщение от Яски Посмотреть сообщение
Если ,etcs, хочет называть все прототипные языки программирования "неистенными" это его право, но только вместе с приставкой ООП.
Я уже говорил, что я согласен на формулировку, что AS1 — ООП язык, но только с приставкой «псевдо». Class-based языки — ООП языки без приставок.

p.S. В моем нике всего три буквы и два подчеркивания, но почему в нём постоянно делают ошибки? То буквы местами перепутают, то «c» с «s», то одно подчеркивания вместо двух (хотя подчеркивания можно и опустить совсем).

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

Регистрация: Jun 2005
Сообщений: 147
Цитата:
Сообщение от Ромастый
В AS1 методы создавались через prototype
Ложь. prototype нужен только лишь для организации наследования, как
Код:
Class.prototype = new SuperClass();
В остальном prototype может использоватся как ссылка, для того что бы НА ЭТАПЕ ИСПОЛНЕНИЯ СОЗДАТЬ НОВОЕ СВОЙСТВО (так и делает wvxvw)
Не вижу ни какой сязи с prototype и созданием свойств (методов) вне конструктора (тела класса). Я уже приводил код, как это делается в теле класса.
2Ромастый... если вы не видели мой код, создание свойств и методов делается так в АС1, в теле класса:
Код:
var бла бла // приват свойство
функция(){одна одинешенька, на меня никто не ссилается} //приват метод
this.свойство = бла-бла // паблик свойство
this.свойство = функция //паблик метод
Цитата:
Сообщение от Ромастый
Вот только function AS1Class() {..} является не телом класса, а конструктором
Функция AS1 - это и конструктор и тело класса одновременно.

Цитата:
Сообщение от wvxvw
курим мануал. ответ простой: нет. указатель на объект активации - argumetns.caller
Еще раз приведу свой код:
Код:
function Class1(){
this.a=1;
	trace (this); //[object Object]
	function localFunc(){
		this.b=2
		trace(this);//this получает ссылку в момент создания экземпляра
					//Выводит [type Object]
		trace(this.a); //undefined
		trace(this.b); //2
	}
	localFunc();
	//this.met = localFunc;
}
//Class1();
var c = new Class1();
//c.met();
/*Выводит:
[object Object] - ссылка на объект с
[type Object] - ссылка на localFunc() (я так думаю)
undefined - нет такого свойства в объекте
2
*/
Как вы видите, у каждой функции свой this.
И еще про область видимости. Вашим тупым аргументом является, то что this вызванное из функции без объекта активации, возвращает undefined. Вы применяете обман, и утверждаете что функция не видит "выше" (выше-вложенной функции, то есть функции-тела ласса). Так то что функция все видит, убедится очень легко... процитирую свой код...
Код:
......................
var pa = this;//ссылка
//приват метод изменяте паблик свойство
function pMetA(){pa.a=10;}
..................
Как видите переменная pa - видна в приватном методе, да и будет видна в паблик методе. По этому не понятны притензии, якобы не видит верхний this... Не видит потому что у каждой функции свой this в AS1, и вы сразу получаете указатель на другой объект, а вот в AS3 у функции нет this, поэтому и возможно обращение к классу из функции

Цитата:
Сообщение от wvxvw
>> В AS3 функции имеют более узкое назначение и применение

ложь =)
Попробуйте, в AS3, создать экземпляр функции, с помощью оператора new и увидите что будет

Цитата:
Сообщение от wvxvw
>> Ну и почему методы созданные на этапе исполнения(то есть когда создаются экземпляры классов) (пускай даже на временной диаграме) должны иметь доступ к приват-свойствам класса?

Это является обязательным атрибутом метода, иначе это не метод.

>> вне тела класса.

Вы путаете конструктор класса и сам класс.
Добавте таким же образом метод в динамический класс в АС3 - это называтся НА ЭТАПЕ ИСПОЛНЕНИЯ - и попытйтесь обратится к приватным свойствам класса, в который вы добавляете
Или у вас такой малый опыт програмирования, или что.. не знаю, что вы не можете провести аналогии между AS1 и AS3... Или на временной диаграме вы это зделаете, или в теле другого класса, к приват вы уже не имеете никакого отношения... Или вы напрочь забыли для чего приват свойста?
Функция в AS1, которая имеет объект активации в виде объекта инициализированного оператором new, и есть класс, так как с этого момента (new) this данной функции будет ссылатся на объект активации, на каждый экземпляр и заполнять пустой объект свойствами this."свойство".

Вот код, и апровержения я так и не увидел. Приватный метод 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
Надоело разжовывать элементарные вещи,... удачи


Последний раз редактировалось riden; 30.06.2008 в 15:20.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:39.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.