Вот на скорую руку. Плюс не знаю как в js делать деструктор. Если вдруг подойдёт и захотите заплатить (удивлюсь, поскольку не уверен что это то что нужно, плюс нет деструктора), пишите в личку.
function Student(name, level, id) {
//Определяем значения по умолчанию.
//Оптимальнее было бы заложить значения по умолчанию в прототип, но так сложнее будет печатать поля в классе-потомке.
this.name = name || "no named";
this.level = level || 1;
this.id = id || 0;
}
Student.prototype = {
//Определяем методы, общие для всех экземпляров класса
show: function() { // Печать полей класса
var list = [ ], x;
for(x in this) {
if(this.hasOwnProperty(x)){
list.push(x + ": " + this[x]);
}
}
alert(list.join("\n"));
},
changeId: function (newId){//Функция смены id
if(newId) this.id = newId;
return newId
},
constructor: Student
};
function SuperStudent(name, level, id, diplom) {
this.name = name || "no named";
this.level = level || 1;
this.id = id || 0;
this.diplom = diplom || "";
}
SuperStudent.prototype = new Student(); // Типа унаследовали
SuperStudent.prototype.changeDiplom = function(theme) {
if(theme) this.diplom = theme;
return this.diplom;
} // Определили функцию смены темы диплома
SuperStudent.prototype.constructor = SuperStudent;
s = new Student("Иванов Сергей Петрович", 2, 123);// Создали студента
s.show();
s.changeId(124);// Изменили id
s.show();
//Создадим дипломника
ss = new SuperStudent("Графинов Армен Викторович", 6, 125, "Методика детектирования взаимосвязи между распилом бюджетных средств и глобальным потеплением климата");
ss.show();
//Cменим ему id и тему диплома
ss.changeDiplom("Почём нынче тепло");
ss.changeId("0");
ss.show();