Details of the object model - tu w dokumentacji mozilli jest to dosyć w miarę opisane...
w js w zasadzie wszystko jest obiektem - nawet zwykła funkcja... i funkcja tutaj jest funkcją/metodą/konstruktorem/obiektem...
generalnie by parent konstruktora wywołać w kontekście this potomnej "klasy" to możesz albo funkcję rodzica przypisać do jakiejś zmiennej/metody w kontekście this po czym tą zmienną wykonać bądź skorzystać z podstawowych funkcji jak apply i call (poczytaj na dokumentacji mozilli)...
rozszerzenie najlepiej i najwydajniej robić przez utworzenie obiektu klasy rodzica w prototype klasy potomnej - często nie chce się od razu wywoływać konstruktora klasy rodzica do prototype i są na to różne tricki jak np. ten napisany z palca:
var fCloneProto; // funkcja do tworzenia obiektu z prototypu innych "konstruktorów"
(function(_fClearConstructor){
fCloneProto = function(constructor){
_fClearConstructor.prototype = constructor.prototype;
constructor = null;
return new _fClearConstructor();
};
})(function(){}); // jakoś jak nie trzeba to nie piszę var tylko daję do argumentów funkcji ;p
var b = function(){};
function c(){
// a tak jeszcze jakby chcieć wywołać parenta lub inną funkcję w kontekście this
b.call(this); //a o przekazywaniu argumentów to se doczytaj...
};
c.prototype = fCloneProto(b);
var d = new c;
alert(d instanceof b);
ogólnie musisz poeksperymentować by skumać czaczę ;] - ale js jest super prosty, fajne są domknięcia i wiele tricków - choć daaawno się już nim jakoś nie bawiłem
ps. w js musisz zrozumieć zasięg zmiennych - jeśli tego nie będziesz rozumiał i będziesz wstawiał gdzie popadnie definicję zmiennych przez var to nie uzyskasz kilku ciekawych efektów - ale z kolei jeśli w ogóle nie rozumiesz co się dzieje, to wstawiaj na początek gdzie popadnie definicję var gdyż inaczej sobie ponadpisujesz zmienne w globalnym scope a te nie zdefiniowane zdefiniujesz w globalnym scope czyli w obiekcie window...