Яски, я прошу написать не по отдельности все принципы ООП, а все вместе, пример на 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 или нет.