Skip to content

ded/klass

Repository files navigation

Klass

An expressive, cross platform JavaScript Class provider with a classical interface to prototypal inheritance.

API

creating a Class

varPerson=klass(function(name){this.name=name}).statics({head: ':)',feet: '_|_'}).methods({walk: function(){}})

Subclassing

varSuperHuman=Person.extend(function(name){// super class is automagically called}).methods({walk: function(){this.supr()this.fly()},fly: function(){}})newSuperHuman('Zelda').walk()

Object Literal Interface

varFoo=klass({foo: 0,initialize: function(){this.foo=1},getFoo: function(){returnthis.foo},setFoo: function(x){this.foo=xreturnthis.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 ;)varAlien=SuperHuman.extend({beam: function(){this.supr()// beam into space}})varSpazoid=newAlien('Zoopo')if(beamIsDown){Spazoid.implement({beam: function(){this.supr()// fallback to jetsthis.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

<scriptsrc="path/to/klass.js"></script><!-- klass() is exposed to context -->

As a node module

npm install klass
varklass=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 

Happy Klassing!

About

a utility for creating expressive classes in JavaScript

Resources

Stars

Watchers

Forks

Packages

No packages published