Показать сообщение отдельно
  #2 (permalink)  
Старый 05.04.2012, 17:37
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Вот на скорую руку. Плюс не знаю как в 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();
Ответить с цитированием