node package manager

subject

Builder-function based object inheritance chain.

subject

Some sweet object definition, inheritance and instantiation in functional syntax.

var subject = require('subject');
 
// define person builder 
var person = subject.define({
 
// This will be called on instantiation 
initializefunction (data) {
this.name = data.name;
},
 
// These are simple methods and prototype properties. 
introduceSelffunction () {
return 'My name is ' + this.name
},
 
walkfunction () {
//  
}
});
 
// instantiate person 
var joe = person({ name: 'Joe Smith' });
 
joe.introduceSelf() // My name is Joe Smith 
 
 
// define musician builder, which should inherit from person 
var musician = person.define({
// Overwrite initialization 
initializefunction (data) {
// call the person's 
person.base.initialize.apply(this, arguments);
 
this.instruments = data.instrments;
},
 
playfunction (instrument) {
return _.contains(this.instruments, instrument) ? '♬ ♫ ♪ ♩ ♭ La La La' : 'I can\'t play that!';
}
});
 
// instantiate musician 
var bob = musician({ name: 'Bob Dylan', instruments: ['guitar', 'voice', 'harmonica'] });
 
// person methods 
bob.introduceSelf()    // My name is Bob Dylan 
 
// musician methods. 
bob.play('harmonica')  // ♬ ♫ ♪ ♩ ♭ La La La 
bob.play('trumpet')    // I can't play that!