} this.name=name; this.methods=[]; for(var i=0;len=methods.length;i<len;i++){ if(typeof(methods[i]!=='String')){ throw new Error('method name must be String!'); } this.methods.push(methods[i]); } } Interface.ensureImplements=function(object){ if(arguments.length<2){ throw new Error('2 arguments required at least!'); } for(var i=0;len=arguments.length;i<len;i++){ var interface=arguments[i]; if(interface.constructor!==Interface){ throw new Error('instance must be Interface!'); } for(var j=0;methodLength=interface.methods.length;j<methodLength;j++){ var method=interface.methods[j]; if(!object[method]||typeof(object[method])=='function')){ throw new Error('object does not implements method!'); } } } } 其实多半情况下,接口并不是经常被应用的,严格的类型检查并不老是明智的。然则在设计复杂的体系的时刻,接口的感化就表现出来了,这看似降低了灵活性,却同时也降低了耦合性,进步了代码的重用性。这在大年夜型体系中是比较有优势的。鄙人面的例子中,声清楚明了一个displayRoute办法,请求其参数具有三个特定的办法,经由过程Interface对象和ensureImplements办法来包管这三个办法的实现,不然将会抛掉足误。
- var ResultFormatter=function(resultObject){
- //对resultObject进行检查,包管是TestResult的实例
- if(!(resultObject instanceof TestResult)){
推荐阅读
谷歌Chromebook或将重生,反击微软Surface
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践
据Engadget报道,科技媒体Android Police援引消息人士的话称,在本年秋季举办的新品宣布会上>>>详细阅读
本文标题:浅谈JavaScript中的接口实现
地址:http://www.17bianji.com/lsqh/36862.html
1/2 1