всей душой и телом приветствую любителей глубокого флеш-программирования на этом скромном форуме. вашему вниманию предлагается небольшая задача. она совсем простая: нужно всего лишь ознакомиться со следующим кодом и не задумываясь ответить на пару пустячковых вопросов. итак, код в студию:

Код:
function SuperClass() {
trace("SuperClass constructor called");
this.__proto__.f1 = function() {
trace("f1 called");
};
this.f2 = function() {
trace("f2 called");
};
}
function SubClass() {
trace("SubClass constructor called");
}
SuperClass.prototype.__proto__.f3 = function() {
trace("f3 called");
};
SubClass.prototype.__constructor__ = SuperClass;
obj = new SuperClass();
trace("---------------");
obj.f1();
obj.f2();
obj.f3();
trace("******************************");
obj2=new SubClass();
trace("---------------");
obj2.f1();
obj2.f2();
obj2.f3();
Ну а теперь вопросы:
1) какую строчку (всего одну) нужно добавить в этот незатейливый код, чтобы методы f1() и f2() могли быть вызваны и для объектов класса SubClass?
2) совсем просто: в чем различия реализации методов f1(), f2(), f3()?
3) черт, только сейчас заметил: если удалить

Код:
SubClass.prototype.__constructor__ = SuperClass;
метод f3() все равно вызывается; к чему бы это?
Первому ответившему на все вопросы верно будет присвоено звание глубокого флеш-программиста и памятный значок с дарственной надписью "Я люблю ПротивныеТипы".
ЗЫ пользователи ||||||||||, lexass, Baltika, DeliMiter, Nox Noctis к участию не допускаются.
ЗЗЫ просьба не воспринимать слишком серьезно -- все равно призов на всех не хватит.