classroom

A Ruby-like implementation for ES5

npm install classroom
4 downloads in the last month

ClassRoom

What is it ?

A implementation of classes in Javascript for ES5 engines.

Features

  • Constructor
  • Private members
  • Constant members

Examples

var classRoom = require('classroom');

var testClass = classRoom.teach({
  initialize: function (arg1, arg2/* , arg3, ... , argn */) {
    // This is the constructor function
    // Properties added here will be private
    this.privateArg = arg1;
  },
  const: { //Describes the constant members of your instances
    const1: "Awesome, I'm immutable!";
  },
  private: { // Describes the properties that are only visible inside the instance
    pv1: "only the instance methods can see me, sweet!",
    secretFn: function () {
      return "I'm invisible to the outside world.";
    }
  },
  // All the other properties are public instance members
  gimmeSecret: function () {
    return "I'm a getter for a private member: " + this.secretFn();
  }
});

var instance = testClass.new();

instance.const1; // => "Awesome, I'm immutable!"
instance.const1 = 'new value'; // throws TypeError

instance.privateArg; // => undefined
instance.pv1; // => undefined
instance.privateArg; // => undefined
instance.secretFn; // => undefined

instance.gimmeSecret(); // => "I'm a getter for a private member: I'm invisible to the outside world."

TODO

  • Inheritance
  • Composition (aka mixins)
  • Class members

Licence

MIT

npm loves you