电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

JavaScript 接口原理與用法實例詳解

瀏覽:91日期:2023-10-28 10:52:41

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

js接口

意義:

提供一種以說明一個對象應該有哪些方法的手段。接口是面向對象javascript程序員的工具箱中最有用的工具之一

接口的利弊:

對于一些中小型程序來說 使用接口很顯然是不明智的,對項目來說接口的好處也不明顯,只是徒增其復雜度而已。

對于接口的好處,那么顯而易見 首先促進代碼的重用,對于開發來講,還可以告訴程序員那些類都使用了什么方法,如果你事先知道接口那么就減少了你在編碼的時候對類與類之間沖突,實現解耦。對于測試和調試也會變得輕松,用于javascript的弱類型語言,類型不匹配經常出現,那么使用接口,這一點會變得容易一些。

注釋接口描述

優點:程序員可以有一個參考缺點:屬于文檔的范疇 ,這種方式過于松散, 沒有檢查接口的方法是否完全被實現

interface Composite{ function add (obj) ; function remove (obj) ; function update ( obj ) ;} //CompositeImp1 implements Compositevar CompositeImp1 = function () { }CompositeImp1.prototype.remove = function ( obj ) { }CompositeImp1.prototype.update = function ( obj ) { }CompositeImp1.prototype.add = function (obj) { }var c1 = new CompositeImp1();屬性檢測

判斷接口是否存在

/*interface Composite{ function add (obj) ; function remove (obj) ; function update ( obj ) ;}interface FormItem { function select (obj) ; }*///CompositeImp1 implements Composite , FormItemvar CompositeImpl = function () { //顯式在類的內部, 接受所實現的接口 //一般來說, 在類的內部,定義一個數組(數組變量名字固定) this.implementsInterfaces = [’Composite’, ’FormItem’]; //利用 implementsInterfaces 后續的判斷使用 }CompositeImpl.prototype.remove = function ( obj ) { // do something ...}CompositeImpl.prototype.update = function ( obj ) {}CompositeImpl.prototype.add = function (obj) { alert(’add’);}CompositeImpl.prototype.select = function (obj) {}//檢測 CompositeImpl 類 的對象function CheckCompositeImpl ( instance ) {//實例對象作為參數,檢測是否存在 //判斷當前對象是否實現了所有的接口。 if ( !IsImplements(instance,’Composite’,’FormItem’) ) { throw new Error(’Object does not implement a requried interface’); } }//公用的具體的檢測方法(核心方法) //return booleanfunction IsImplements ( obj ) { //判斷實例對象,有沒有實現相關的接口. //arguments 對象 獲得函數的實際參數 for ( var i=1; i<arguments.length; i++ ) { //接收所實現接口的名字 var interfaceName = arguments[i]; //判斷此方法, 是 成功,還是失敗。 var interfaceFound = false; for ( var j=0; j<obj.implementsInterfaces.length; j++ ) { if ( obj.implementsInterfaces[j] == interfaceName ) {interfaceFound = true;break; } } if ( !interfaceFound ) { return false; } } return true; }鴨式辯型法

核心: 一個類實現接口的主要目的:把接口里的方法都實現。(檢測實現方法)完全面向對象,代碼實現統一, 也解耦

//1 ,接口類。 //定義一個類,作為借口的基類,通過類實例化N多個接口實例。// Class Interface 接口類所需要的2個參數參數1:接口的名字 (string)參數2:接收方法名稱的集合 methods, 是一個數組 (array)//實現抽象方法 var Interface=function( name,methods ){ //methods 的名字必須是String類型的可以.if( arguments.length != 2 ){ throw new Error(’the instance Interface constructor arguments must be 2 length!’);};this.name=name;this.methods=[]; //定義一個內置的空數組對象,等待接受methods里的元素 (方法名字);for( var i=0; i<methods.length; ++i ){ if( typeof methods[i] !== ’string’ ){ throw new Error(’ths Interface method name is error’); }; this.methods.push( methods[i] );};};//2 準備工作: 具體的實現類//①實例化接口對象.var CompositeInterface=new Interface(’CompositeInteface’,[’add’,’remove’]);var FormIntemInterface=new Interface(’FormIntemInterface’,[’update’,’select’]);//CompositeImpl implements CompositeInterface,FormIntemInterface.//②具體的實現類var CompositeImpl=function(){ }//③實現接口的方法//implements methodsCompositeImpl.prototype.add=function(){ alert(’add’); }CompositeImpl.prototype.remove=function(){ alert(’remove’); }CompositeImpl.prototype.update=function(){}// CompositeImpl.prototype.select=function(){}//3: 檢驗接口里的方法.//檢驗通過, 不做任何操作, 代碼繼續執行. 不通過,拋出異常, Error. //這個方法的目的,就是檢測方法的 .Interface.ensureImplements=function( obj ){ //核心檢驗方法.if( arguments.length < 2 ){ //如果檢測的方法接受的參數小于2個, 參數傳遞失敗. throw new Error(’Interface.ensureImplements method constructor arguments must be >= 2!’);};//獲得接口實例對象,通過接口實例對象, 得到接口實例對象里的方法.for( var i=1; i<arguments.length; ++i ){ var instanceInterface=arguments[i]; //判斷參數 是否是接口類的 類型. 是否是 接口類的構造函數. if( instanceInterface.constructor != Interface ){ throw new Error(’the arguments constructor not be Interface Class’); }; //循環接口實例對象的每一個方法 . for( var j=0; j<instanceInterface.methods.length; ++j ){ //用一個臨時變量接收每一個方法的名字,注意是字符,并不是函數. var methodName=instanceInterface.methods[j]; //object[key]; if( !obj[methodName] || typeof obj[methodName] !== ’function’ ){ //對象沒有這個方法. throw new Error(’the method name '’ + methodName + ’' is not found!’); }; };}}var c1=new CompositeImpl();Interface.ensureImplements( c1,CompositeInterface,FormIntemInterface );c1.add();

總結:接口是實現解耦。避免類和類之間,調用方法的沖突。

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

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

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 碎石机设备-欧版反击破-欧版颚式破碎机(站)厂家_山东奥凯诺机械 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | 淘剧影院_海量最新电视剧,免费高清电影随心观看 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 淘剧影院_海量最新电视剧,免费高清电影随心观看 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 智能终端_RTU_dcm_北斗星空自动化科技 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 汕头市盛大文化传播有限公司,www.11400.cc | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 工业洗衣机_工业洗涤设备_上海力净工业洗衣机厂家-洗涤设备首页 bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | loft装修,上海嘉定酒店式公寓装修公司—曼城装饰 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 |