0.0.5 • Published 9 years ago

instance-factory v0.0.5

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

NPM version Build Status Coverage Status

Instance factory

Create classes for nodejs the easy way

Getting started

Instance factory provides a 'createClass' method that builds an object instance based on the given description.

Use cases

Simple class :

var instanceFactory = require('instance-factory')
  , Clazz, o;

Clazz = instanceFactory.createClass('Clazz', {
  static: {
    config: {
      z: 'z'
    }
  },
  constructor: function () {
    this.a = 3;
    this.b = 4;
  },
  methods: {
    getA: function () {
      return this.a;
    }
  }
});
o = new Clazz();
console.log(o instanceof Clazz);
console.log(Clazz.config);
console.log(o.getA());
console.log(o.a);

Subclass :

var instanceFactory = require('instance-factory')
  , Clazz, Subclazz, o;

Clazz = instanceFactory.createClass('Clazz', {
  constructor: function () {
    this.a = 3;
    this.b = 4;
  },
  methods: {
    getA: function () {
      return this.a;
    }
  }
});
Subclazz = instanceFactory.createClass('Subclazz', {
  parent: Clazz,
  defaults: {b: 5},
  methods: {
    getB: function () {
      return this.b;
    }
  }
});
o = new Subclazz();
console.log(o instanceof Subclazz);
console.log(o instanceof Clazz);
console.log(o.getA());
console.log(o.getB());

Subclass of a subclass :

var instanceFactory = require('instance-factory')
  , Clazz, Subclazz, Child, o;

Clazz = instanceFactory.createClass('Clazz', {
  constructor: function () {
    this.a = 3;
    this.b = 4;
  },
  methods: {
    getA: function () {
      return this.a;
    }
  }
});
Subclazz = instanceFactory.createClass('Subclazz', {
  parent: Clazz,
  defaults: {b: 5},
  methods: {
    getB: function () {
      return this.b;
    }
  }
});
Child = instanceFactory.createClass('Child', function () { // class desc can also be specified with a function
  return {
    parent: Subclazz,
    defaults: {c: 6},
    methods: {
      getA: function () {
        return this.parent.getA.apply(this) * 2;
      },
      getC: function () {
        return this.c;
      },
      getSum: function () {
        return this.a + this.b + this.c;
      }
    }
  };
});
o = new Child();
console.log(o instanceof Child);
console.log(o instanceof Subclazz);
console.log(o instanceof Clazz);
console.log(o.getA());
console.log(o.getB());
console.log(o.getC());
console.log(o.getSum());

Enjoy !