日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript代理模式原理與用法實例詳解

瀏覽:216日期:2023-11-07 15:28:40

本文實例講述了JavaScript代理模式原理與用法。分享給大家供大家參考,具體如下:

代理模式的定義,代理是一個對象(proxy)用它來控制目標對象的訪問。為此他要是先與目標對象相同的接口,但是他不同于裝飾者模式,它對目標對象不進行任何修改,它的目的在于延緩'復雜'對象的初始化時間。這樣可以在用到這個目標對象的時候再初始化他(對于單例來講更是重要)。

代理模式有兩種分類:

(1)普通代理

(2)惰性代理

具體看下面的例子

第一,普通代理模式

步驟一,接口檢驗文件的引用

//定義一個靜態(tài)方法來實現(xiàn)接口與實現(xiàn)類的直接檢驗//靜態(tài)方法不要寫出Interface.prototype ,因為這是寫到接口的原型鏈上的//我們要把靜態(tài)的函數(shù)直接寫到類層次上//定義一個接口類var Interface=function (name,methods) {//name:接口名字 if(arguments.length<2){ alert('必須是兩個參數(shù)') } this.name=name; this.methods=[];//定義一個空數(shù)組裝載函數(shù)名 for(var i=0;i<methods.length;i++){ if(typeof methods[i]!='string'){ alert('函數(shù)名必須是字符串類型'); }else { this.methods.push( methods[i]); } }};Interface.ensureImplement=function (object) { if(arguments.length<2){ throw new Error('參數(shù)必須不少于2個') return false; } for(var i=1;i<arguments.length;i++){ var inter=arguments[i]; //如果是接口就必須是Interface類型 if(inter.constructor!=Interface){ throw new Error('如果是接口類的話,就必須是Interface類型'); } //判斷接口中的方法是否全部實現(xiàn) //遍歷函數(shù)集合分析 for(var j=0;j<inter.methods.length;j++){ var method=inter.methods[j];//接口中所有函數(shù) //object[method]傳入的函數(shù) //最終是判斷傳入的函數(shù)是否與接口中所用函數(shù)匹配 if(!object[method]||typeof object[method]!='function' ){//實現(xiàn)類中必須有方法名字與接口中所用方法名相同throw new Error('實現(xiàn)類中沒有完全實現(xiàn)接口中的所有方法') } } }}

步驟二,目標類

(1)圖書類

//圖書類 /* * bid 圖書id * bName 圖書名稱 * bPrice 圖書價格 * */ var Book = function(bid,bName,bPrice){ this.bid = bid; this.bName = bName; this.bPrice = bPrice; }

(2)真正的目標類

//目標類 var myBookShop=(function () { //書店里的書 var books={}; return function (bks) { //初始化 if(typeof bks=='object'){ books=bks; } //加書 this.addBook = function(book){ books[book.bid] = book; } //找書 this.findBook=function (bid) { if(books[bid]){ return books[bid]; }else { return null; } } //還書 this.returnBook=function (book) {this.addBook(book); } //借書 this.lendBook=function (bid) {var book=this.findBook(bid);return book; } } })();

步驟三,普通代理

var myBookShopProxy=function (bks) { var obj=new myBookShop(bks);//類似于目標類的引用 //加書 this.addBook=function (book) { obj.addBook(book); } //找書 this.findBook = function(bid){ return obj.findBook(bid); } //還書this.returnBook=function (book) { obj.returnBook(book);} //借書 this.lendBook=function (bid) { return obj.lendBook(bid); } }

步驟四,添加數(shù)據(jù)后,開始訪問

var proxy = new myBookShopProxy({ '001':new Book('001','EXTJS','45'), '002':new Book('002','JS','60') }) alert(proxy.lendBook('001').bName)

在普通的代理模式中,我們可以看出代理中對目標對象的引用是一次性初始化的,然后再在該基礎(chǔ)上實現(xiàn)其他操作

如圖:目標類和代理同時實現(xiàn)了同一接口。代理中一次性對目標類進行實例,然后值訪問到目標類中的方法。

JavaScript代理模式原理與用法實例詳解

總結(jié),這個代理是我們嚴格安裝定義來寫的,一般開發(fā)中不會用到,應(yīng)為他沒什么意義。

第二種,惰性代理----在使用時才對目標類進行初始化再引用。

對代理部分的修改如下,其余部分相同,代碼如下

//惰性代理---在使用時在初始化目標類的引用 var myBookShopProxy=function (bks) { var obj=null; this._init=function () { obj=new myBookShop(bks); } //加書 this.addBook=function (book) { this._init(); obj.addBook(book); } //找書 this.findBook=function (bid) { this._init(); obj.findBook(bid); } //還書 this.returnBook=function (book) { this._init(); obj.returnBook(book); } //借書 this.lendBook=function (bid) { this._init(); return obj.lendBook(bid); } }

修改后的代理執(zhí)行過程,如圖

JavaScript代理模式原理與用法實例詳解

感興趣的朋友可以使用在線HTML/CSS/JavaScript前端代碼調(diào)試運行工具:http://tools.jb51.net/code/WebCodeRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容還可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

標簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品99免费看| 久久精品97| 日韩精品第二页| 亚洲欧洲日韩精品在线| 日韩avvvv在线播放| 国产日韩视频在线| 国产欧美另类| 国产精品激情| 成人国产精品久久| 六月婷婷一区| 亚洲一区区二区| 日韩av电影一区| 国产一区二区三区亚洲综合| 蜜桃成人精品| 91精品国产自产精品男人的天堂| 日韩福利视频网| 日韩理论视频| 好吊日精品视频 | 久久精品二区亚洲w码| 国产精品极品国产中出| 国产精品99一区二区| 亚洲深深色噜噜狠狠爱网站 | 久久裸体视频| 亚洲精品伊人| 成人啊v在线| 亚洲+小说+欧美+激情+另类| 日本一区二区高清不卡| 欧美日韩色图| 精品三级在线| 欧美日韩夜夜| 欧美日韩在线播放视频| 日韩一区二区三区在线看| 99久久久久| 欧美日韩亚洲一区| 亚洲资源在线| 久久亚洲成人| 国产精品久久久久久久久久久久久久久 | 视频二区不卡| 日韩精彩视频在线观看| 久久久成人网| 国产精品入口久久| 亚洲91网站| 亚洲三级视频| 日韩av一二三| 久久国产欧美日韩精品| 四虎精品永久免费| 欧美精品资源| 成人小电影网站| 日韩欧美2区| 午夜亚洲精品| 在线免费观看亚洲| 香蕉精品999视频一区二区| 久久国产精品久久w女人spa| 日韩精品福利一区二区三区| 亚洲另类av| 女主播福利一区| 婷婷综合五月| 亚洲午夜黄色| 久热精品在线| 国产视频一区二| 久久国产视频网| 亚洲影院天堂中文av色| 视频一区中文字幕国产| 97久久超碰| 久久99久久久精品欧美| 国产成人精选| 欧美亚洲日本精品| 人人香蕉久久| 中文在线日韩| 国产免费av国片精品草莓男男| 清纯唯美亚洲综合一区| 国产欧美视频在线| 国产精品一区二区三区美女 | 日韩中文av| 亚洲精品一级| 日韩av网站免费在线| 中文字幕一区久| 99视频精品全部免费在线视频| 久久精品国产68国产精品亚洲| 蜜桃国内精品久久久久软件9| 亚洲一卡久久| 日本不卡视频在线| 国产福利电影在线播放| 欧美日韩精品免费观看视欧美高清免费大片 | 美女久久久久久| 成人午夜网址| 婷婷综合激情| xxxxx性欧美特大| 亚洲一区亚洲| 精品国产乱码久久久久久樱花| 久久一区二区三区电影| 亚洲精品看片| 99久久视频| 日韩精品社区| 久久精品伊人| 噜噜噜躁狠狠躁狠狠精品视频| 欧美a一区二区| 日韩中文字幕1| 久久婷婷一区| 精品一区二区三区中文字幕视频 | 福利视频一区| 97视频热人人精品免费| 另类亚洲自拍| 99久精品视频在线观看视频| 日韩av一二三| 红桃视频欧美| 久久久久久黄| 国产在线观看91一区二区三区| 国产精品日韩欧美一区| 你懂的亚洲视频| 亚洲欧美久久久| 国产一区二区三区四区大秀| 日本视频在线一区| 亚洲三级在线| 免费视频最近日韩| 国产精品美女| 亚洲日本网址| 日韩电影免费在线观看| 麻豆传媒一区二区三区| 日韩欧美久久| 亚洲精品激情| 亚洲资源网站| 日本午夜精品久久久| 丝袜a∨在线一区二区三区不卡| 久久精品一区二区不卡| 人人精品亚洲| 首页国产精品| 秋霞影院一区二区三区| 美女国产精品久久久| 国产精品欧美大片| 久久高清精品| 在线亚洲激情| 国产a亚洲精品| 久久a爱视频| 国产高清亚洲| 国产精品15p| 久久精品国产久精国产| 久久国产乱子精品免费女| 国产欧美在线| 国内不卡的一区二区三区中文字幕| 国产精东传媒成人av电影| 久久不卡国产精品一区二区| 欧美国产亚洲精品| 国产精品v日韩精品v欧美精品网站| 美腿丝袜在线亚洲一区| 色综合狠狠操| 五月天久久777| 视频福利一区| 在线看片一区| 国产精品久久久一区二区| 97精品在线| 亚洲欧美日韩国产综合精品二区| 亚洲日本国产| 国产aⅴ精品一区二区四区| 久久一区亚洲| 亚洲福利专区| 欧美日韩一区二区三区在线电影| 欧美一级二级三级视频| 成人在线超碰| 日本欧洲一区二区| 美腿丝袜亚洲一区| 精品久久美女| 视频在线观看一区| 成人精品久久| 日本va欧美va精品| av高清不卡| 性一交一乱一区二区洋洋av| 91成人在线网站| 不卡一区2区| 国产精品亚洲欧美| 亚洲少妇自拍| 国产videos久久| 香蕉久久久久久久av网站| 麻豆精品新av中文字幕| 亚洲欧洲国产精品一区| а√天堂中文在线资源8| 妖精视频成人观看www| 国产精品主播在线观看| 久久夜色精品| 日韩免费av| 婷婷综合国产| 亚洲精品在线二区| 久久精品电影| 欧洲精品一区二区三区| 国产精品亲子伦av一区二区三区| 国产一级久久| 久久久影院免费| 国产一区二区三区亚洲综合| 日本免费新一区视频| 免费看黄色91| 午夜宅男久久久| 日韩成人亚洲| 久久不见久久见免费视频7| 日本一区福利在线| 99精品在线观看| 91欧美在线| 丝袜美腿诱惑一区二区三区| 97se综合| 天堂va蜜桃一区二区三区| 欧美日韩国产在线一区|