js与设计模式----简单工厂

简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口.
这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。
比如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函数名,然后传入需要的参数,完成构造 。
posted @ 2012-11-20 20:06  Bug罗  阅读(191)  评论(0编辑  收藏  举报