31i73-class
A simple node.js class library
API
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
Create a class
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);
Static methods
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');
Inheritence
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
});
Abstract class
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; }
});