Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Happy Klassing!