下面是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>
分享到:
相关推荐
《Adobe Photoshop CC JavaScript脚本编程参考》是针对Adobe Photoshop CC的详细编程指南,专注于使用JavaScript进行自动化和扩展功能。此文档适用于Windows和Macintosh平台,是2019年版,由Adobe公司发布并保留所有...
首先,JavaScript在Photoshop CC中的核心功能是提供一个脚本接口,允许开发者直接操控Photoshop的对象模型。对象模型包含了所有可用的面板、菜单项、图层、选区等元素,可以通过JavaScript进行访问和操作。例如,你...
通过`ScriptEngine`接口,开发者可以执行JavaScript代码并获取结果;通过`ScriptableObject`,可以实现JavaScript与Java对象的互操作,使得JavaScript能够调用Java方法,访问Java对象。 然而,值得注意的是,尽管...
此外,Go还支持接口,这是一种强大的抽象机制,允许进行多态性编程。 2. 内存管理:Go语言使用垃圾回收机制来自动管理内存,这与JavaScript类似。然而,Go的内存管理更注重性能,垃圾回收策略被设计得更加高效。 3...
4. **API接口**: 如果项目是为了开发应用,那么可能包含对外提供的API接口,供其他程序调用获取黄历数据。 5. **示例和测试**: 开源项目通常会提供示例代码和测试用例,帮助用户了解如何使用这个库,并确保代码质量...
Analysys JavaScript SDK ======== This is the official JavaScript SDK for Analysys. ...设置初始化接口 通过初始化代码的配置参数配置您的 AppKey 设置上传地址 通过初始化代码的配置参数 uplo
这些库通常会提供API接口,用于面部特征点检测、人脸比对、表情分析等任务。 例如,Face API可能包含以下关键功能: 1. **面部检测**:检测图像中的脸部,返回脸部的位置和大小。 2. **面部特征提取**:识别面部的...
《geomajas-plugin-editing-javascript-api-1.15.0-M3.zip》是一个与开源GIS(地理信息系统)相关的压缩包,主要包含了用于GWT(Google Web Toolkit)客户端的编辑功能的JavaScript API。这个API是geomajas项目的一...
在实际使用中,开发者可以使用该SDK提供的API(应用程序接口)来设置自定义的追踪点,监控用户在网站上的各种行为,包括页面加载时间、用户交互行为、网络请求等。这些数据在收集后,通常会发送到后端服务器进行存储...
JavaScript在Photoshop中的应用是通过ECMAScript实现的,这是一种基于标准的、广泛使用的脚本语言,它为Photoshop提供了强大的编程接口(API),使得开发者可以深入操控图像处理、图层管理、颜色调整等多个方面。...
《FaceID JavaScript SDK详解》 在当今的互联网时代,人脸识别技术已经广泛应用到多个领域,如安全验证、社交媒体、在线教育等。FaceID作为一款高效、精准的人脸识别服务,提供了丰富的SDK供开发者集成到自己的应用...
- DOM(文档对象模型):它是一个平台和语言无关的接口,通过这个接口可以访问和修改文档的内容与结构。 - BOM(浏览器对象模型):提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。 2. JavaScript的...
- Fetch API:现代浏览器的异步请求接口,返回Promise 8. **模块化** - CommonJS:Node.js中的模块系统,`require`和`module.exports` - ES6模块:`import`和`export`,静态导入和导出 9. **错误处理** - try....
- **互操作接口**:定义了 Java 和 JavaScript 之间的桥梁,可能是通过 `org.graalvm.polyglot` 包中的类和方法实现的。 - **编译和运行脚本**:说明如何使用 GraalVM 编译和执行这些跨语言的源码。 5. **性能...
- 谨慎地暴露Android方法给JavaScript,因为这可能带来安全风险,比如恶意的JavaScript代码可能会滥用这些接口。 - 使用`@JavascriptInterface`注解可以避免`WebView`的跨域脚本攻击,但仍然需要确保在设计接口时...
Ruby的ActiveRecord提供了数据库操作的简便接口,而JavaScript的AJAX技术可以实现异步数据通信,使得用户可以在不刷新页面的情况下更新数据。此外,HTTPS协议和OAuth等安全机制可以确保用户信息的安全传输和访问控制...
- **dom**:文档对象模型,是HTML和XML文档的编程接口,允许程序和脚本动态更新、添加、删除和改变元素和属性。 - **chm**:Windows帮助文件格式,通常用于存放电子文档。 - **帮助文档**:提供技术指导和解释的文件...
其次,"Photoshop-CS6-JavaScript-Ref.pdf"是针对Photoshop CS6的JavaScript编程接口(API)参考。JavaScript在Photoshop中可以实现脚本化的自动化任务,这对于批量处理、自定义工作流程或者创建交互式的设计项目尤...
1. **DOM操作**:Document Object Model(DOM)是HTML和XML文档的编程接口。JavaScript通过DOM可以操作页面上的元素,例如获取、创建、修改或删除元素。在这个特效中,我们需要获取`<img>`元素,并在用户交互时更新...
5. **API 接口**:JavaScript-Bivio 库会提供一套 API,允许开发者调用 Perl-Bivio 后端的功能,例如发送请求获取数据、提交表单或执行特定计算。 6. **兼容性和性能优化**:为了确保在不同浏览器和设备上的良好...