Сообщение от Maxmaxmахimus
|
п.с. ты видимо перед этим не думал месяц целый над удобством этого чуда как это делал я))
|
я решил перейти с обычных конструкторов и прототипов на более высший интерфейс для создания конструкторов, проосто потому что так красивее код смотрится
ну и задание того требует, чтобы код был ООП-шным.
Сообщение от Maxmaxmахimus
|
либо стырил решение у меня либо просто сам додумался до такого же и быстро )
|
я 2 года назад уже представлял, как она будет выглядеть
вдохновлялся кодом
Class из мутулз.
Сообщение от Maxmaxmахimus
|
но возможно ты этого и не сделал) короче показывай давай
|
да ничего особенного , что ты думаешь ..
да, её надо причесать.. но она мне нужна вот чисто в текущем проекте - я хочу писать в функциональном стиле.
function Class (descriptor) {
var constructor = descriptor.__construct__ || function () {};
var parent = descriptor.__extends__ || {};
var static = descriptor.__static__ || {};
var i;
if (typeof parent === "function") {
parent = new parent();
}
constructor.prototype = Object.create(parent);
constructor.prototype.super = parent;
constructor.prototype.constructor = constructor;
for (i in descriptor) if (descriptor.hasOwnProperty(i)) {
constructor.prototype[i] = descriptor[i];
}
for (i in static) if (static.hasOwnProperty(i)) {
constructor[i] = static[i];
}
return constructor;
}
var Creation = new Class({
createdBy: "God",
// см. этот метод в каждом классе и результат
overrideMe: function () {
return "Hello";
}
});
var Animal = new Class({
__extends__: Creation,
lives: true,
overrideMe: function () {
return this.super.overrideMe() + ", ";
}
});
var Cat = new Class({
__construct__: function (name) {
alert("Создана кошкэ");
this.name = name;
},
__extends__: Animal,
__static__: {
FAV_CAT_NAME: "пушок"
},
meow: function () {
alert(this.name + " : мяу");
alert("Унаследовал : " + this.createdBy);
},
overrideMe: function () {
return this.super.overrideMe() + "World!";
}
});
var cat = new Cat( Cat.FAV_CAT_NAME );
cat.meow();
alert(cat.overrideMe());