簡(jiǎn)單工廠模式在創(chuàng)建ajax對(duì)象的時(shí)候也非常有用.
這個(gè)庫(kù)里提供了幾種ajax請(qǐng)求的方式,包括xhr對(duì)象的get, post, 也包括跨域用的jsonp和iframe. 為了方便使用, 這幾種方式都抽象到了同一個(gè)接口里面.
var request1 = Request(‘cgi.xx.com/xxx’ , ”get’ ); request1.start(); request1.done( fn ); var request2 = Request(‘cgi.xx.com/xxx’ , ”jsonp’ ); request2.start(); request2.done( fn );
Request實(shí)際上就是一個(gè)工廠方法, 至于到底是產(chǎn)生xhr的實(shí)例, 還是jsonp的實(shí)例. 是由后來(lái)的代碼決定的。
實(shí)際上在js里面,所謂的構(gòu)造函數(shù)也是一個(gè)簡(jiǎn)單工廠。只是批了一件new的衣服. 我們扒掉這件衣服看看里面。
通過(guò)這段代碼, 在firefox, chrome等瀏覽器里,可以完美模擬new.
function A( name ){ this.name = name; } function Object Factory(){ var obj = {}, 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; } var a = ObjectFactory( A, ‘svenzeng’ ); alert ( a.name ); //svenzeng
這段代碼來(lái)自es5的new和構(gòu)造器的相關(guān)說(shuō)明, 可以看到,所謂的new, 本身只是一個(gè)對(duì)象的復(fù)制和改寫過(guò)程, 而具體會(huì)生成什么是由調(diào)用ObjectFactory時(shí)傳進(jìn)去的參數(shù)所決定的。
相關(guān)文章:
詳解JavaScript設(shè)計(jì)模式經(jīng)典之策略模式
JavaScript設(shè)計(jì)模式經(jīng)典之單例模式詳解
javascript設(shè)計(jì)模式之觀察者模式詳細(xì)介紹
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com