`
xj19891016
  • 浏览: 28738 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

JavaScript----接口

阅读更多
下面是JavaScript中模仿接口实现的一种方法
<script type="text/javascript">
/**name-->接口名称
 * methods-->接口的方法签名
 */
var Interface = function(name, methods) {
    if(arguments.length != 2) {
        throw new Error("创建接口"+name+"时,传入参数个数为:" + arguments.length
          + ", 实际需要两个参数.");
    }
    
    this.name = name;
    this.methods = [];
    for(var i = 0, len = methods.length; i < len; i++) {
        if(typeof methods[i] !== 'string') {
            throw new Error("方法名称必须是String类型.");
        }
        this.methods.push(methods[i]);        
    }    
};    

/**校验object是否实现了指定的接口
 * object-->接口的实现类
 */
Interface.ensureImplements = function(object) {
    if(arguments.length < 2) {
        throw new Error("ensureImplements方法验证时必须传入待验证的接口");
    }

    for(var i = 1, len = arguments.length; i < len; i++) {
        var interface = arguments[i];
        if(interface.constructor !== Interface) {
            throw new Error("传入的参数类型错误,必须为Interface类型。");
        }
        
        for(var j = 0, methodsLen = interface.methods.length; j < methodsLen; j++) {
            var method = interface.methods[j];
            if(!object[method] || typeof object[method] !== 'function') {
                throw new Error("在实现类中没有找到" + method 
                                + "方法。该类必须实现" +interface.name + "接口的" + method + "方法");
            }
        }
    } 
};

//定义ResultSet接口
var ResultSet = new Interface('ResultSet', ['save','update','del']);
var SelectInterface = new Interface('SelectInterface', ['select']);

var User = function(object){
	Interface.ensureImplements(object, ResultSet, SelectInterface);
	this.object = object;
};

User.prototype.oop = function(){
	this.object.save();
	this.object.update();
	this.object.del();
	this.object.select();
};

/**
 *定义Obj类,实现ResultSet接口的全部方法
 */
function Obj(){}
Obj.prototype = {
	save : function(){
		alert("Obj-->save()方法");
	},
	update : function(){
		alert("Obj-->update()方法");
	},
	del : function(){
		alert("Obj-->del()方法");	
	},
	select : function(){
		alert("Obj-->select()方法");	
	}
}
/**
 *定义Obj1类,实现ResultSet接口的全部方法
 */
function Obj1(){}
Obj1.prototype = {
	save : function(){
		alert("Obj1-->save()方法");
	},
	update : function(){
		alert("Obj1-->update()方法");
	},
	del : function(){
		alert("Obj1-->del()方法");	
	}
}

var obj = new Obj();
var user = new User(obj);
user.oop();
obj = new Obj1();
user = new User(obj);
user.oop();
</script>
分享到:
评论

相关推荐

    photoshop-cc-javascript-ref-2019.pdf

    《Adobe Photoshop CC JavaScript脚本编程参考》是针对Adobe Photoshop CC的详细编程指南,专注于使用JavaScript进行自动化和扩展功能。此文档适用于Windows和Macintosh平台,是2019年版,由Adobe公司发布并保留所有...

    photoshop-cc-javascript-ref-2015.pdf

    首先,JavaScript在Photoshop CC中的核心功能是提供一个脚本接口,允许开发者直接操控Photoshop的对象模型。对象模型包含了所有可用的面板、菜单项、图层、选区等元素,可以通过JavaScript进行访问和操作。例如,你...

    org.mozilla.javascript-1.7.2.jar

    通过`ScriptEngine`接口,开发者可以执行JavaScript代码并获取结果;通过`ScriptableObject`,可以实现JavaScript与Java对象的互操作,使得JavaScript能够调用Java方法,访问Java对象。 然而,值得注意的是,尽管...

    开源项目-pazams-go-for-javascript-developers.zip

    此外,Go还支持接口,这是一种强大的抽象机制,允许进行多态性编程。 2. 内存管理:Go语言使用垃圾回收机制来自动管理内存,这与JavaScript类似。然而,Go的内存管理更注重性能,垃圾回收策略被设计得更加高效。 3...

    6tail-lunar-javascript-master.zip

    4. **API接口**: 如果项目是为了开发应用,那么可能包含对外提供的API接口,供其他程序调用获取黄历数据。 5. **示例和测试**: 开源项目通常会提供示例代码和测试用例,帮助用户了解如何使用这个库,并确保代码质量...

    ans-javascript-sdk:Analysys JavaScript SDK

    Analysys JavaScript SDK ======== This is the official JavaScript SDK for Analysys. ...设置初始化接口 通过初始化代码的配置参数配置您的 AppKey 设置上传地址 通过初始化代码的配置参数 uplo

    face-recognition-javascript-webcam-faceapi-main.zip

    这些库通常会提供API接口,用于面部特征点检测、人脸比对、表情分析等任务。 例如,Face API可能包含以下关键功能: 1. **面部检测**:检测图像中的脸部,返回脸部的位置和大小。 2. **面部特征提取**:识别面部的...

    geomajas-plugin-editing-javascript-api-1.15.0-M3.zip

    《geomajas-plugin-editing-javascript-api-1.15.0-M3.zip》是一个与开源GIS(地理信息系统)相关的压缩包,主要包含了用于GWT(Google Web Toolkit)客户端的编辑功能的JavaScript API。这个API是geomajas项目的一...

    袋鼠云数据采集产品DT.Trace的JavaScript_SDK_dttrace-javascript-sdk.zip

    在实际使用中,开发者可以使用该SDK提供的API(应用程序接口)来设置自定义的追踪点,监控用户在网站上的各种行为,包括页面加载时间、用户交互行为、网络请求等。这些数据在收集后,通常会发送到后端服务器进行存储...

    photoshop-cc-javascript参考2019

    JavaScript在Photoshop中的应用是通过ECMAScript实现的,这是一种基于标准的、广泛使用的脚本语言,它为Photoshop提供了强大的编程接口(API),使得开发者可以深入操控图像处理、图层管理、颜色调整等多个方面。...

    facepp-javascript-sdk-master.zip

    《FaceID JavaScript SDK详解》 在当今的互联网时代,人脸识别技术已经广泛应用到多个领域,如安全验证、社交媒体、在线教育等。FaceID作为一款高效、精准的人脸识别服务,提供了丰富的SDK供开发者集成到自己的应用...

    JavaScript-学习笔记.pdf

    - DOM(文档对象模型):它是一个平台和语言无关的接口,通过这个接口可以访问和修改文档的内容与结构。 - BOM(浏览器对象模型):提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。 2. JavaScript的...

    javascript-review-源码.rar

    - Fetch API:现代浏览器的异步请求接口,返回Promise 8. **模块化** - CommonJS:Node.js中的模块系统,`require`和`module.exports` - ES6模块:`import`和`export`,静态导入和导出 9. **错误处理** - try....

    java-javascript-graalvm-源码.rar

    - **互操作接口**:定义了 Java 和 JavaScript 之间的桥梁,可能是通过 `org.graalvm.polyglot` 包中的类和方法实现的。 - **编译和运行脚本**:说明如何使用 GraalVM 编译和执行这些跨语言的源码。 5. **性能...

    Android应用源码之Android调用JavaScript-IT计算机-毕业设计.zip

    - 谨慎地暴露Android方法给JavaScript,因为这可能带来安全风险,比如恶意的JavaScript代码可能会滥用这些接口。 - 使用`@JavascriptInterface`注解可以避免`WebView`的跨域脚本攻击,但仍然需要确保在设计接口时...

    个人健康档案系统-Ruby-JavaScript-下载

    Ruby的ActiveRecord提供了数据库操作的简便接口,而JavaScript的AJAX技术可以实现异步数据通信,使得用户可以在不刷新页面的情况下更新数据。此外,HTTPS协议和OAuth等安全机制可以确保用户信息的安全传输和访问控制...

    dhtml-html-css-javascript-dom帮助文档(.chm)五合一

    - **dom**:文档对象模型,是HTML和XML文档的编程接口,允许程序和脚本动态更新、添加、删除和改变元素和属性。 - **chm**:Windows帮助文件格式,通常用于存放电子文档。 - **帮助文档**:提供技术指导和解释的文件...

    photoshop 中文手册+API集合.rar

    其次,"Photoshop-CS6-JavaScript-Ref.pdf"是针对Photoshop CS6的JavaScript编程接口(API)参考。JavaScript在Photoshop中可以实现脚本化的自动化任务,这对于批量处理、自定义工作流程或者创建交互式的设计项目尤...

    javascript经典特效---图片转换效果.rar

    1. **DOM操作**:Document Object Model(DOM)是HTML和XML文档的编程接口。JavaScript通过DOM可以操作页面上的元素,例如获取、创建、修改或删除元素。在这个特效中,我们需要获取`&lt;img&gt;`元素,并在用户交互时更新...

    javascript-Bivio:支持 perl-Bivio 的第 3 方 javascript 库

    5. **API 接口**:JavaScript-Bivio 库会提供一套 API,允许开发者调用 Perl-Bivio 后端的功能,例如发送请求获取数据、提交表单或执行特定计算。 6. **兼容性和性能优化**:为了确保在不同浏览器和设备上的良好...

Global site tag (gtag.js) - Google Analytics