JavaScript не имеет классической системы наследования, он имеет прототипную систему наследования. Так что в JavaScript технически нет понятия «класс».
Объекты наследуются от других объектов (так называемый объект-прототип), а не от абстрактных классов. Одним из важных следствий этого является то, что если несколько объектов совместно используют один и тот же прототип, и один из этих объектов изменяет атрибут, определенный в прототипе, это изменение вступает в силу немедленно для всех других объектов.
Попытка использовать наследование JavaScript, как если бы оно основывалось на классах, обычно вызывает большие головные боли, потому что вы постоянно сталкиваетесь с проблемами такого типа.
Я знаю, что это на самом деле не отвечает на ваши конкретные вопросы, но на высоком уровне я рекомендую вам принять прототипическое наследование вместо того, чтобы пытаться использовать "псевдоклассы". Даже если поначалу это выглядит странно, ваш код будет намного надежнее, и вы не потеряете время, пытаясь понять странные ошибки, подобные этой, вызванные странной цепочкой прототипов.
Посмотрите это видео, где Дуглас Крокфорд объясняет наследование. Оно доступно онлайн на веб-сайте Yahoo UI Theatre. Это изменило способ, которым я программировал в JavaScript:)
http://video.yahoo.com/watch/111585/1027823 (ссылка на первую часть)
http://developer.yahoo.com/yui/theater/ (для всех видео)