//создание создавателя классов
(function(name) {
init = {}
init.class = {}
init.private = function() {
}
init.protected = function() {
}
init.public = function() {
}
init.static = function() {
}
window[name] = function Class(class) {
init.class = {} //очищаем кастрюлю от предыдущего "сваренного" класса
class.call(init)
return init.class
}
})('Class')
//пример создания класса
var Cat = Class(function Cat() {
this.private({
a : 20,
spead : 20
})
this.protected({
})
this.public({
})
this.static({
})
});
вот каркас того что я начал делать, по сути функция Class принимает функцию описывающую класс, каким образом? вызывая определенные методы относительно this и суя с них обьекты.
так вот фунция Class принимает эту функцию и вызывает относительно обьекта init который хранится в её замыкании, методы в этом init что-то делают с полученнынми обьектами, наполняя свойство init.class создавая там функцию фабрику класса.
потом функция Class просто возвращает полученное там init.class значение))
правда init.class придется очищать перед каждый созданием класса потому что в нем будет хранится ссылка на предыдущий созданный класс, но это мелочи)) это как кастрюлю после варки помыть.