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 |
Website | https://code.google.com/p/joose-js/ |
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 the Perl 6 object system, but unlike Perl and Moose, Joose doesn't support multiple inheritance.
Example
Two classes written in 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 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.
References
External links
- Official website
- Official Joose 2 website
- Joose Mailing List
- Presentation: Software development with JavaScript and Joose
Web frameworks | |
---|---|
.NET | |
C++ | |
ColdFusion | |
Common Lisp | |
Haskell | |
Java | |
JavaScript | |
Perl | |
PHP | |
Python | |
Ruby | |
Rust | |
Scala | |
Smalltalk | |
Other languages |