Skip to content
a utility for creating expressive classes in JavaScript
JavaScript
Pull request Compare This branch is 7 commits behind ded:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
make
src
test
.gitignore
Makefile
README.md
klass.js
klass.min.js
package.json

README.md

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 Literals...

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

Implementing...

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 environment

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

<script type="text/javascript">
  var Foo = klass(fn1)
  var Bar = Foo.extend(fn2)
  Bar.implement({ ... })
</script>
``` html

<h3>as a module</h3>

``` js
// your-application.js
var klass = require('path/to/klass')

var Foo = klass(...)

Install the Package!

By far the easiest way to get started with klass is to simply install the package and hit the ground running!!

$ npm install klass

// in your Node application
var klass = require('klass')

Ender compatibility

add klass to your ender compilation

$ ender add klass

Use it:

$.klass(...)

Developers

$ npm install --dev
$ make
$ make test

Keep your edits localized to src/klass.js

Contributors

Something went wrong with that request. Please try again.