close
Skip to content

Latest commit

 

History

92 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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!

About

a utility for creating expressive classes in JavaScript

Resources

Stars

749 stars

Watchers

27 watching

Forks

Releases

Packages

Used by

Contributors

Languages