简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口.
这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。
比如ajax会有jsonp、get、post等方式的调用方法。
var
request1 = Request(
'cgi.xx.com/xxx'
,
''
get
' );
var
request1 = Request(
'cgi.xx.com/xxx'
,
''
post
' );
以下代码为模拟js构造函数
function
ObjectFactory(){
var
obj = {},
//把传入的参数当作数组保存在
Constructor,call方法意为调用数组的shift方法执行arguments的内容
Constructor = Array.prototype.shift.call( arguments );
//郁闷,求大神指点
obj.__proto__ =
typeof
Constructor .prototype ===
'number'
? Object.prototype
: Constructor .prototype;
var
ret = Constructor.apply( obj, arguments );
return
typeof
ret ===
'object'
? ret : obj;
}
function
A( name ){
this
.name = name;
}
var
a = ObjectFactory( A,
'svenzeng'
);
alert ( a.name );
//svenzeng
ObjectFactory
函数模拟JavaScript的new的过程,就是一个工厂,传入A函数名,然后传入需要的参数,完成构造 。