Джозеф (рамка)
![]() | |
Разработчик(и) | Мальта Убл |
---|---|
Стабильная версия | 2.1
/ 2 августа 2009 г. |
Написано в | JavaScript |
Тип | Фреймворк веб-приложений |
Лицензия | Новая лицензия BSD |
Веб-сайт | https://code.google.com/p/joose-js/ |
Joose — это с открытым исходным кодом самостоятельная метаобъектная система для JavaScript с поддержкой классов , наследования , примесей , признаков и аспектно-ориентированного программирования .
Метаобъектная система Joose является мультипарадигмальной. Он поддерживает стили программирования на основе классов и прототипов, а также наследование на основе классов и расширение на основе ролей. В то время как другие платформы JavaScript часто специализируются на DOM -доступе и AJAX , Joose специализируется исключительно на внедрении успешных методов программирования в язык сценариев JavaScript. Таким образом, Joose часто используется в сочетании с другой средой JavaScript DOM/Ajax и тестируется с помощью jQuery , YUI , Dojo , ExtJS , Prototype , Mootools и PureMVC.
Joose был вдохновлен Moose , объектной системой для Perl 5 , которая сама была вдохновлена объектной системой Perl 6 , но в отличие от Perl и Moose, Joose не поддерживает множественное наследование .
Пример
[ редактировать ]Два класса, написанные на Joose:
Class("Point", {
has: {
x: {is: "rw"},
y: {is: "rw"}
},
methods: {
clear: function () {
this.setX(0);
this.setY(0);
}
}
});
Class("Point3D", {
isa: Point,
has: {
z: {is: "rw"}
},
after: {
clear: function () {
this.setZ(0);
}
}
});
Point3D — это подкласс Point. У него определен еще один атрибут и дополнительный код, который нужно запустить после запуска метода Clear() суперкласса. «rw» означает, что атрибут доступен для чтения и записи с помощью пары аксессоров get/set, генерируемых автоматически.