
接口是面向对象JavaScript法度榜样员的对象箱中最有效的对象之一。在设计模式中提出的可重用的面向对象设计的原则之一就是“针对接口编程而不是实现编程”,即我们所说的面向接口编程,这个概念的重要性可见一斑。但问题在于,在JavaScript的世比赛,没有内置的创建或实现接口的办法,也没有可以断定一个对象是否实现了与另一个对象雷同的一套办法,这使得对象之间很难交换应用,好在JavaScript拥有出色的灵活性,这使得模仿传统面向对象的接口,添加这些特点并训斥事。接口供给了一种用以解释一个对象应当具有哪些办法的手段,尽管它可以注解这些办法的含义,然则却不包含具体实现。有了这个对象,就能按对象供给的特点对它们进行分组。例如,假如A和B以及接口I,即便A对象和B对象有极大年夜的差别,只要他们都实现了I接口,那么在A.I(B)办法中就可以交换应用A和B,如B.I(A)。还可以应用接口开辟不合的类的合营性。如不雅把本来请求以一个特定的类为参数的函数改为请求以一个特定的接口为参数的函数,那么所有实现了该接口的对象都可以作为参数传递给它,如许一来,彼此不相干的对象也可以被雷同地对待。
二、接口的利与弊
既定的接口具有自我描述性,并可以或许促进代码的重用性,接口可以供给一种信息,告诉外部一个类须要实现哪些办法。还有助于稳定不合类之间的通信方法,削减了持续两个对象的过程中出现的问题。这对于调试也是有赞助的,在JavaScript这种弱类型说话中,类型不匹配很难追踪,应用接口时,如不雅出现了问题,会有更明白的缺点提示信息。当然接口并非完全没出缺点,如不雅大年夜量应用接口会必定程度上弱化其作为弱类型说话的灵活性,另一方面,JavaScript并没有对接口的内置的支撑,只是对传统的面向对象的接口进行模仿,这会使本身较为灵活的JavaScript变得加倍难以驾驭。此外,任何实现接口的方法都邑对机能造成影响,某种程度上归咎于额外的办法调用开销。接口应用的最大年夜的问题在于,JavaScript不像是其他的强类型说话,如不雅不遵守接口的商定,就会编译掉败,其灵活性可以有效地避开上述问题,如不雅是在协同开辟的情况下,其接口很有可能被破坏而不会产生任何缺点,也就是弗成控性。
在面向对象的说话中,应用接口的方法大年夜体类似。接口中包含的信息说清楚明潦攀类须要实现的办法以及这些办法的签名。类的定义必须明白地声明它们实现了这些接口,不然是不会编译经由过程的。显然在JavaScript中我们不克不及如法炮制,因为不存在interface和implement关键字,也不会在运行时对接口是否遵守商定进行检查,然则我们可以经由过程帮助办法和显式地检查模仿出其大年夜部分特点。
三、在JavaScript中模仿接口
在JavaScript中模仿接口重要有三种方法:经由过程注释、属性检查和鸭式辩型法,以上三种方法有效结合,就会产生类似接口的效不雅。
注释是一种比较直不雅地把与接口相干的关键字(如interface、implement等)与JavaScript代码一同放在注释中来模仿接口,这是最简单的办法,然则效不雅最差。代码如下:
- //以注释的情势模仿描述接口
- /*
- interface Composite{
- function add(child);
- function remove(child);
- function getName(index);
- }
- interface FormItem{
- function save();
- }
- */
- //以注释的情势模仿应用接口关键字
- var CompositeForm =function(id , method,action) { //implements Composite , FormItem
- // do something
- }
- //模仿实现具体的接口办法 此处实现Composite接口
- CompositeForm.prototype.Add=function(){
推荐阅读
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践 据Engadget报道,科技媒体Android Police援引消息人士的话称,在本年秋季举办的新品宣布会上>>>详细阅读
本文标题:浅谈JavaScript中的接口实现
地址:http://www.17bianji.com/lsqh/36862.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示