Generating Calendar month information using JavaScript
This could use some breathing space. 


this.endDay = date.getDay();
date.setDate(1);
this.startDay = date.getDay();
this.days = [];



Compare it to this. 

this.endDay = date.getDay();

date.setDate(1);

this.startDay = date.getDay();
this.days = [];


See how the extra vertical space calls out the change in state?



Magic Number Alert

This needs an extra variable, a comment, or maybe even both. 


for(var i = 0; i &lt; 42; i++) {



I've read over this loop at least 20 times now. I still have no idea why the number 42 is important here. Why is 42 the upper bound? The logic isn't obvious. You should find a way to make it obvious.