Наследование классов


Наследование классов в JavaScript не предусмотрено, но его можно эмулировать.
Не очень похоже на настоящие классы, но это работает. В первом варианте -
используем конструктор родителя как инициализатор в конструкторе наследника,
и в ручном режиме запоминаем перекрытые методы (а можно и свойства):

// Parent
function ParentClass() {
    this.name = "parent"
    this.show = ParentClass_show
}

function ParentClass_show() {
    alert(this.name)
}

// Child
function ChildClass() {
    this.parent = ParentClass

    this.parent()
    // Перезадаем свойство
    this.name = "child"
    // Перекрываем метод show()
    this.ParentClass_show = ParentClass_show

    this.show = ChildClass_show
}

function ChildClass_show() {
    alert( "Class "+this.name )
    this.ParentClass_show();
}

var obj = new ChildClass()
obj.show()

Во втором случае используем для наследования прототипы:

function ParentClass() { }
ParentClass.prototype.f1 = function() { alert(1) }

function ChildClass() { }
ChildClass.prototype = new ParentClass()
ChildClass.prototype.f2 = function() { alert(2) }

var obj = new ChildClass();
obj.f1()