W JS nie ma klas, ale są obiekty. Nie ma dziedziczenia klasycznego, ale jest prototypowe.
Polecam zacząć od bardzo solidnej nauki JS. Nie traktowania go jako czegoś w jakikolwiek głębszy sposób podobnego do PHP czy języków z klasycznym dziedziczeniem. Programiści z innych języków przeważnie odruchowo starają się pisać w JS podobnie jak wcześniej. To błąd. Potem narzekają, że "JS jest głupi", a tak naprawdę chodzi im o to, że "JavaScript jest gorszym PeHaPem niż PeHaP". To raczej nie jest dziwne, prawda?
Tyle jeśli chodzi o sam poziom kodu. Języka trzeba się po prostu nauczyć. Np. z książki "JavaScript -- mocne strony" Douglasa Crockforda -- zwięzła i dobra, choć uczy samego języka, a nie wykorzystania go na stronach www.
Architektura aplikacji może być podobna w JS-ie jak w praktycznie każdym innym języku. Architektura oprogramowania nie jest specjalnie związana z językiem. W JS-ie również można -- i trzeba! -- stosować dekompozycję, jakiś rodzaj ukrywania informacji. Trzeba zarządzać złożonością. W czasie wykonania, w PHP-ie klasy przecież nie komunikują się ze sobą -- robią to już konkretne obiekty, a nie klasy! W JS-ie będzie podobnie. Tak jak w wielu innych językach. Obiekty rozmawiają z obiektami.
Frameworki istnieją. Jest YUI czy ExtJS. Gdy manipulujesz DOM na niskim poziomie, to pewnie użyjesz jQuery.