JavaScripting

The definitive source of the best
JavaScript libraries, frameworks, and plugins.


  • ×

    a utility for creating expressive classes in JavaScript
    Filed under  › 

    • 🔾28%Overall
    • 747
    • 33.2 days
    • 🕩83
    • 👥4

    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!

    Show All