一、工厂模式(根据字符串,动态选择构造函数)
function CarMaker(){
CarMaker.prototype.dirve = function(){
return 'abc';
}
}
//静态工厂方法
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 = new CarMaker[constr]();
return newcar;
}
//定制构造函数
CarMaker.Compact = function(){
this.doors = 4;
}
CarMaker.Convertible = function(){
this.doors = 2;
}
CarMaker.SUV= function(){
this.doors = 24;
}
//测试
var corolla = CarMaker.factory('Compact');
var solstic = CarMaker.factory('Convertible');
var cherokee = CarMaker.factory('SUV');
二、自然工厂(Object对象也是一个工厂)
var o = new Object(),
n = new Object(1),
s = new Object('1'),
b = new Object(true);