31i73-class

31i73.com simple node.js class library

31i73-class

A simple node.js class library

Class( statics [, instanced] )

  • statics - An object containing all static class properties.
    This may also contain the special property _init for declaring the initialiser, and _inherits for declaring a single or multiple classes to inherit from
  • instanced - An object containing all instance class properties
var Class = require('31i73-class');

var Person = Class({
	_init: function(name){
		this.name = name;
		this.age = undefined;
	}
},{
	get_name: function(){ return this.name; },
	set_name: function(set){ this.name = set; },

	get_age: function(){ return this.age; },
	set_age: function(set){ this.age = set; }
});

var bob = new Person('bob');
bob.set_age(42);
var Person = Class({
	_init: function(name){
		this.name = name;
		this.age = undefined;
	},
	create_adult: function(name){
		var create = new Person(name);
		create.set_age(24);
		return create;
	},
	create_child: function(name){
		var create = new Person(name);
		create.set_age(12);
		return create;
	}
},{
	get_name: function(){ return this.name; },
	set_name: function(set){ this.name = set; },

	get_age: function(){ return this.age; },
	set_age: function(set){ this.age = set; }
});

var littly_timmy = Person.create_child('Timmy');
var Animal = Class({
	_init: function(name){
		this.name = name;
		this.soundeffect = undefined;
	}
},{
	set_soundeffect: function(path){
		this.soundeffect = new Soundeffect(path);
	}
});

var Horse = Class({
	_inherits: Animal,
	_init: function(){
		Animal.call(this,'horse');
		this.set_soundeffect('horse.wav');
	}
});

//Multiple inheritence
var Mule = Class({
	_inherits: [
		Horse,
		Donkey
	],
	_init: function(){
		Animal.call(this,'mule');
		this.set_soundeffect('mule.wav');
	}
});

//a missing initialiser causes the first inherited classes initialiser to be called, instead
var Shire_horse = Class({
	_inherits: Horse
});
var Animal = Class({
	_abstract: true,
},{
	get_name: Class.abstract,
	get_size: Class.abstract
});

//attempting to create a non-abstract class with abstract methods will generate an exception
var Donkey = Class({
	_inherits: Animal
},{
	get_name: function(){ return 'donkey'; }
});
// Error: Class contains abstract method: get_size

//all is right this time..
var Donkey = Class({
	_inherits: Animal
},{
	get_name: function(){ return 'donkey'; },
	get_size: function(){ 4; }
});