工厂模式
根据字符串指定的类型,在运行时创建对象。
  function CarMaker(){}
  CarMaker.prototype.drive = function(){
    return 'i have ' +  this.doors + ' doors!';
  }
  CarMaker.factory = function(type){
    var constr = type, newcar;
    if (typeof CarMaker[constr]!='function'){
      throw Error (constr + 'dose not exist!');
    }
    if (typeof CarMaker[constr].prototype.drive != 'function'){
      CarMaker[constr].prototype = new CarMaker();
    }
    newcar = new CarMaker[constr]();
    return newcar;
  }
  CarMaker.Compact = function(){
    this.doors = 4;
  }
  CarMaker.Convertible = function(){
    this.doors = 2;
  }
  CarMaker.SUV = function(){
    this.doors = 24;
  }
  // usage
  var corolla = CarMaker.factory('Compact');
  corolla.drive();