Joose (framework)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Developer(s) Malte Ubl
Stable release
2.1 / August 2, 2009 (2009-08-02)
Written in JavaScript
Type Web application framework
License New BSD License

Joose is an open-source self-hosting metaobject system for JavaScript with support for classes, inheritance, mixins, traits and aspect-oriented programming.

The Joose meta-object system is multi-paradigm. It supports class-based and prototype-based programming styles as well as class-based inheritance and role-based extension. While other JavaScript frameworks often specialize on DOM-access and AJAX, Joose specializes solely on bringing successful programming techniques to the JavaScript scripting language. Joose is thus often used in conjunction with another DOM/Ajax JavaScript framework and is tested with jQuery, YUI, Dojo, ExtJS, Prototype, Mootools and PureMVC.

Joose was heavily inspired by Moose, the object system for Perl 5 which was itself inspired by Perl 6 object system, but unlike Perl and Moose, Joose doesn't support multiple inheritance.


Two classes written in Joose:

Class("Point", {
    has: {
        x: {is: "rw"},
        y: {is: "rw"}
    methods: {
        clear: function () {

Class("Point3D", {
    isa: Point,
    has: {
        z: {is: "rw"}
    after: {
        clear: function () {

Point3D is a subclass of Point. It has another attribute defined and additional code to run after running the superclass clear() method. The "rw" means the attribute is readable and writable with a pair of get/set accessors generated automatically.


External links[edit]