Да, это не ООП язык, он только имитирует ООП. Так же, как и perl. И много я от него не жду - тут главное понять основные правила игры.
Поэтому на тупизм отвечаю тем же:
function BaseClass()
{
this.__classStack = ['BaseClass'];
this.instanceOf = function (ref, cls)
{
if (! ref || ! ref.__classStack) return false;
for (var i in ref.__classStack)
if (ref.__classStack[i] == cls) return true;
return false;
};
// ...
}
function ChildClass (args)
{
this.__proto = BaseClass;
this.__proto();
this.__classStack.unshift('ChildClass');
// ...
this.someFunc_ = function (obj)
{
if (! this.instanceOf(obj, 'SomeClass')) /* error */
// ...
};
}
ChildClass.prototype = BaseClass;
Вот так и побеждается сырость...
По пути еще нашел такое вот обсуждение:
http://forum.ru-board.com/topic.cgi?forum=31&bm=1&topic=2365Теперь хочу понять, как вызвать "перегруженный" метод. Уродство конечно - спорить не буду, но js, в плане web, мне кажется более распространенной средой, чем java, и более гибкой, чем чистосерверные решения. Минимальная автоматизация - это не шибко интересно.
Пытаюсь работать по стандартам и учитывать "самостийность" IE. Пока, если код корректен, в обеих браузерах пашет. Конечно, IE многого не может.: catch(e if ...) не знает (где-то читал, что грядет JavaScript 2.0, а тут с 1.5 нет полной совместимости), DOM2 реализован на уровне SARAY1, CSS2 - CSS1.5 (при том, что пора внедрять DOM3 и CSS3), встроенный в HTML XML не понимает. И этим браузером пользуется большая часть пользователей!..