Skip to content

Instantly share code, notes, and snippets.

@takaheraw
Created February 2, 2013 12:00
Show Gist options
  • Save takaheraw/4697009 to your computer and use it in GitHub Desktop.
Save takaheraw/4697009 to your computer and use it in GitHub Desktop.
function CarMaker(){}
CarMaker.prototype.drive = function(){
return "Vroom, I have " + this.doors + " doors";
};
CarMaker.factory = function(type){
var constr = type, newcar;
if(typeof CarMaker[constr] !== "function"){
throw{
name: "Error",
message: constr + " doesn't exist"
};
}
if(typeof CarMaker[constr].prototype.drive !== "function"){
CarMaker[constr].prototype = new CarMaker();
}
newcar = CarMaker[constr]();
return newcar;
};
CarMaker.Compact = function(){
this.doors = 4;
};
var car = CarMaker.new("Compact");
car.drive();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment