Эксперимент с реализацией полноценного ООП фрейморка в JavaScript. Представляет из себя фабрику классов Classes
. Позволяет создавать наследуемые классы с неизменяемыми private свойствами.
- decl(ClassName, declaration) - декларирует новый класс. Созданный класс будет доступен как
Classes.ClassName
; - name(Namespace) - создаёт новое пространство имён, доступное как
Classes.Namespace
. В созданном пространстве имён можно создавать вложенные пространства и классы; - is(obj, Type) - проверяет унаследованность объекта от определённого типа (класса);
- getType(obj) - возвращает название типа объекта.
- public - публичные члены экземпляра класса;
- private - приватные члены экземпляра класса;
- protected - защищённые (доступные только из экземпляров самого класса и его наследников) члены экземпляра класса;
- extend - от какого класса унаследован;
- staticPublic - статичные публичные поля;
- staticPrivate - статичные приватные поля;
// Создаём пространство имён
Classes.name('Examples');
// Декларируем класс
Classes.Examples.decl('Simple', {
public: {
init: function(name) {
this.name = name;
},
toString: function() {
return `Hello ${this.name}!!!`;
}
},
private: {
name: ''
}
});
// Создаём экземпляр класса
var example = new Classes.Examples.Simple('world');
console.log(String(example)); // Hello world!!!
// Пытаемся получить доступ к приватному полю
console.log(example.name); // undefined
Больше примеров: examples.
Ещё больше примеров: тесты.