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

您的位置:首頁技術文章
文章詳情頁

JavaScript接口實現方法實例分析

瀏覽:36日期:2023-10-26 15:33:13

本文實例講述了JavaScript接口實現方法。分享給大家供大家參考,具體如下:

JavaScript中實現接口的方法有三種:

第一種,使用注釋的方法實現接口

特點:

(1)最簡單,但是功能最弱

(2)利用 interface和 implement'文字'

(3)把他們用注釋的方式表現出來

具體實現如下:

1,用注釋定義一個接口

/* * interface PersonDao(){ * function add(obj); * function remove(obj); * function find(id); * } * */

(2)用注釋來注明實現的接口

/* * PersonDaoImp implement PersonDao (PersonDaoImp實現接口PersonDao) * */ var PersonDaoImp=function () { };//定義實現類 //實現 PersonDaoImp.prototype.add=function(obj){ //具體代碼 } PersonDaoImp.prototype.remove=function(obj){ //具體代碼 } PersonDaoImp.prototype.find=function(id){ //具體代碼 }

總結:

(1)使用文字的形式告知是誰實現誰

(2)優點,這樣是很有意義的,大型項目需要的就是規范和標準,可以在沒有寫實現之前充分考慮架構和設計

(3)缺點:需要人為的遵守注釋中的說明

第二種,使用屬性檢驗法實現接口 。 實質為通過一個屬性判斷實現了誰

具體如下:

1,用注釋來定義一個接口

/* * interface PersonDao(){ * function add(obj); * function remove(obj); * function find(id); * } * */

2,用注釋來說明實現接口類+實現類中增加屬性

/* * PersonDaoImp implement PersonDao * */ var PersonDaoImp=function () { this.implementInterface=['PersonDao'];//告知該類實現的接口是啥是一個數組,} PersonDaoImp.prototype.add=function(obj){ alert(obj); } PersonDaoImp.prototype.remove=function(obj){ //具體實現 } PersonDaoImp.prototype.find=function(id){ //具體實現 }

(3)檢驗屬性的方法

//接收一個不定參數 可能有多個 使用Object function imp1(Object) { //遍歷傳入對象的所用屬性 i=1:第一個是不定參數,從第二個參數開始遍歷接口,故i=1 for(var i=1;i<arguments.length;i++){//arguments除Object外var interfaceName=arguments[i];var interfaceFind=false;for(var j=0;j<Object.implementInterface.length;j++){ if(Object.implementInterface[j]==interfaceName){ interfaceFind=true; break; }}if(!interfaceFind){ return false;} } return true; }

(4)接口與實現類的配合實現

function addObj(obj) { var PersonDao=new PersonDaoImp(); //開始檢查 實現類是否實現接口 if(!imp1(PersonDao,'PersonDao')){//某對象是否實現接口(對象,接口) 第一次參數是對象,第二個參數是不定參數throw new Error('PersonDaoImp沒有實現接口PersonDao'); }else{//實現PersonDao.add(obj); } }

(5)使用

addObj('實現');

總結一下,該種方式只是簡單判斷了在實現時有沒有傳遞與屬性中相同的接口名稱,而對于方法是否實現沒有做驗證。

于是有了第三種的鴨式變形法--檢驗接口中的方法是否實現。

第三種,鴨式變形法 一種形似的命名方式,從實現角度來理解為:如果對象中具有的方法與接口中定義的方法同名 則認為是實現了本接口

具體如下:

1,定義一個接口類 注意這里與上面兩種不一樣了,不用寫注釋說明了

var Interface=function (name,methods) {//name:接口名字 if(arguments.length<2){ alert('必須是兩個參數') } this.name=name; this.methods=[];//定義一個空數組裝載函數名 for(var i=0;i<methods.length;i++){ if(typeof methods[i]!='string'){alert('函數名必須是字符串類型'); }else {this.methods.push( methods[i]); } } }

2,定義一個靜態方法來實現接口與實現類的 直接檢驗

注意,靜態方法不要寫成Interface.prototype ,因為這是寫到接口的原型鏈上的,我們要把靜態的函數直接寫到類層次上。

Interface.ensureImplement=function (object) { if(arguments.length<2){ throw new Error('參數必須不少于2個') return false; } for(var i=1;i<arguments.length;i++){ var inter=arguments[i]; //如果是接口就必須是Interface類型 if(inter.constructor!=Interface){throw new Error('如果是接口類的話,就必須是Interface類型'); } //判斷接口中的方法是否全部實現 //遍歷函數集合 for(var j=0;j<inter.methods.length;j++){ var method=inter.methods[j];//接口中所有函數 //object[method]是傳入的函數 if(!object[method]||typeof object[method]!='function' ){//實現類中必須有方法名字與接口中所用方法名相同 throw new Error('實現類中沒有完全實現接口中的所有方法') } } } }

3,應用

3.1定義自己的接口

例如:此處定義兩個接口

var FirstInterface=new Interface('FirstInterface',['add','remove','search']);//第一個接口 var SecondInterface=new Interface('SecondInterface',['save']);//第二個接口

3.2,定義實現類

function commManager() {//實現兩個類 //先實現方法 this.add=function () { alert('ok--實現'); } this.remove=function () { } this.search=function () { } this.save=function () { } //檢驗 Interface.ensureImplement(this,GridManager,formManager); }

3.3,實現類的實例化

var comm=new commManager(); comm.add();//調用

總結:三種方式都有自己的優勢與缺點,每種的選擇需要根據自己的需要進行選擇。但是在設計的時候實現類間低耦合的相當重要的。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

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

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美 日韩 国产精品免费观看| 精品视频黄色| 精品久久美女| 国产精品观看| 久久国产三级| 欧美亚洲色图校园春色| 国产精品外国| 欧美日韩一区二区三区视频播放| 精品国产乱码久久久久久樱花| 国产精品久久久久9999高清| 亚洲资源av| 日韩亚洲在线| 国产亚洲精品v| 狠狠爱成人网| 老鸭窝毛片一区二区三区| 久久亚洲美女| 日韩高清一级| 日韩极品在线观看| 国产日韩欧美一区| 精品国产aⅴ| 国产欧美日韩精品一区二区免费| 欧美亚洲免费| 国产精品66| 久久久国产精品一区二区中文| 日韩成人亚洲| 黄色日韩在线| 日韩精品社区| 精品一区二区三区免费看 | 精品国产18久久久久久二百| 亚洲三级视频| 天堂俺去俺来也www久久婷婷| 国产毛片一区二区三区| 久久久国产亚洲精品| 自拍日韩欧美| 91精品推荐| 欧美激情视频一区二区三区免费| 欧美一区网站| 日韩精品一级二级| 久久久精品区| 久久中文字幕一区二区三区| 国产精品久久久久久av公交车| 日韩一二三区在线观看| 国产一区日韩一区| 极品裸体白嫩激情啪啪国产精品| 欧美日韩精品免费观看视完整| 精品国产成人| 精品国产乱码久久久久久1区2匹| 国产成人免费视频网站视频社区| 激情黄产视频在线免费观看| 成人精品动漫一区二区三区| 国产一区二区三区精品在线观看| 精品国产欧美| 久久久久国产精品一区三寸 | 伊人久久大香线蕉av超碰演员| 亚洲高清激情| 国产一级久久| 国产精品视频一区二区三区| 国产精品**亚洲精品| 国产suv精品一区二区四区视频 | 99久久婷婷这里只有精品| 成人污污视频| 成人福利一区 | 91欧美日韩| 国产精品**亚洲精品| 日韩国产在线观看一区| 天堂俺去俺来也www久久婷婷| 91精品国产调教在线观看| 国产在线看片免费视频在线观看| 欧美视频精品全部免费观看| 日韩不卡一区二区三区| 丝袜美腿一区二区三区| 亚洲精品护士| 国产另类在线| 国产一区二区久久久久| 久久精品二区三区| 国产日韩欧美一区在线| 精品美女久久| 蜜桃精品视频| 免费日韩视频| 国产精品白浆| 久久亚洲人体| 四虎国产精品免费观看| 天堂日韩电影| 视频一区二区不卡| 精品资源在线| 日韩中文在线电影| 免费欧美在线视频| 91欧美极品| 色婷婷精品视频| 91成人福利| 国产精品一区二区三区av麻 | 国产成人久久精品麻豆二区| 99综合视频| 91欧美在线| 亚洲久久视频| 久久人人97超碰国产公开结果| 性色av一区二区怡红| 久久精品 人人爱| 成人国产精品一区二区免费麻豆| 桃色av一区二区| 亚洲欧美高清| 美女一区网站| 国产伦一区二区三区| 国产精选久久| 深夜日韩欧美| 中文字幕在线看片| 蜜桃一区二区三区在线| 中文字幕在线视频网站| 日韩美女国产精品| 国产精品久久观看| 国产美女久久| 日韩精品免费视频人成| 激情丁香综合| 午夜影院一区| 国产精品色在线网站| 99国内精品| 精品日韩视频| 国产亚洲久久| 亚洲成av在线| 国产精久久一区二区| 婷婷精品在线观看| 91精品蜜臀一区二区三区在线| 精品三级在线观看视频| 日本在线不卡视频一二三区| 欧美中文字幕一区二区| 高清av一区| 精品91福利视频| 国产高潮在线| 成人亚洲一区二区| 欧美手机在线| 伊人久久国产| 91精品国产福利在线观看麻豆| 丝袜美腿一区二区三区| 国产精品**亚洲精品| 四虎精品一区二区免费| 青青青国产精品| 久久精品亚洲一区二区| 国产精品久一| 日韩黄色大片| 国产精品白丝久久av网站| 国产探花一区在线观看| 日韩视频一区| 日韩在线一二三区| 天堂va欧美ⅴa亚洲va一国产| 麻豆亚洲精品| 老牛国内精品亚洲成av人片| 天堂成人国产精品一区| 亚洲资源av| 久久视频国产| 亚洲另类视频| 精品一区二区三区中文字幕| 欧美激情99| 精品久久电影| 亚洲91视频| 久久国产视频网| 国产欧美日韩一区二区三区四区| 国产日产精品一区二区三区四区的观看方式| 91精品美女| 九色porny丨国产首页在线| 精品一区二区三区中文字幕在线| 国产一区二区三区四区大秀| 亚洲人成精品久久久| 精品一区在线| 亚洲欧美日韩精品一区二区| 日本中文字幕一区二区视频| 久久av超碰| 免费观看久久av| 亚洲69av| 日韩在线观看不卡| 日韩精品一级| 婷婷亚洲五月| 亚洲精品在线二区| 精品亚洲成人| 日韩美女国产精品| 99国产精品私拍| 国产精品欧美一区二区三区不卡 | 高清日韩欧美| 久久久久久婷| 在线亚洲一区| 免费在线成人| 亚洲欧美网站| 日本成人在线网站| 精品高清久久| 今天的高清视频免费播放成人| 激情婷婷综合| 免费av一区二区三区四区| 在线日韩成人| 亚洲欧美不卡| 99久久九九| 精品免费av在线| 色综合视频一区二区三区日韩| 久久久久午夜电影| 少妇久久久久| av亚洲免费| 国产精品主播在线观看| 国产高清久久| 狠狠久久伊人中文字幕| 一区在线观看| 美女精品视频在线| 日本成人精品|