Klass
An expressive, cross platform JavaScript Class provider with a classical interface to prototypal inheritance.
API
creating a Class
var Person = klass(function (name) {
this.name = name
})
.statics({
head: ':)',
feet: '_|_'
})
.methods({
walk: function () {}
})
Subclassing
var SuperHuman = Person.extend(function (name) {
// super class is automagically called
})
.methods({
walk: function() {
this.supr()
this.fly()
},
fly: function() {}
})
new SuperHuman('Zelda').walk()
Object Literal Interface
var Foo = klass({
foo: 0,
initialize: function() {
this.foo = 1
},
getFoo: function () {
return this.foo
},
setFoo: function (x) {
this.foo = x
return this.getFoo()
}
})
note: initialize will be called on class invocation
Implement
because sometimes you want to overwrite OR mixin an instance method
// note you can optionally pass an object literal to extend too ;)
var Alien = SuperHuman.extend({
beam: function() {
this.supr()
// beam into space
}
})
var Spazoid = new Alien('Zoopo')
if (beamIsDown) {
Spazoid.implement({
beam: function() {
this.supr()
// fallback to jets
this.jets()
}
})
}
Environments
Klass is Common JS compliant and provides the Modules 1.1 interface to allow two flavors of development. See the implementations below:
Browser
<script src="path/to/klass.js"></script>
<!-- klass() is exposed to context -->
As a node module
npm install klass
var klass = require('klass')
Ender compatibility
add klass
to your ender compilation
ender add klass
Developers
npm install
make
make test
Keep your edits localized to src/klass.js
LICENSE
MIT