Да, это не ООП язык, он только имитирует ООП. Так же, как и 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 не понимает. И этим браузером пользуется большая часть пользователей!..