`
black.angel
  • 浏览: 34753 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JavaScript 中的接口实现

阅读更多

突发奇想的想起了javascript的oo,扩展到设计模式中,貌似没有接口,非常多的设计模式无法实现,比如组合,代理等...

于是就写了一份javascript接口实现的demo.代码如下.

 

/*
 * @param {String} name       继承接口的类名.
 * @param {Array} methods     类要实现的方法数组.
 * 功能说明:构造类方法.
 * 中间的所有参数,需要用反射来验证所有参数的正确性.否则就失去意义了.
 */
var Interface = function(className,methodsArray){
	if(arguments.length!=2){
		throw new Error("实现接口必须要满足2个以上的参数");
	}
	this.obj = className;
	this.methods = [];//实现方法集合,这里定义成一个共有的方便访问.
	for(var i=0;i<methodsArray.length;i++){
		if(typeof methodsArray[i]!=='string'){
			throw new Error("实现的方法名必须是字符");
		}
		this.methods.push(methodsArray[i]);//推入方法实现列表的
	}
	this.init();
}
Interface.prototype = {
	//反射检测
	init:function(){
		if(this.obj){
			for(var i=0;i<this.methods.length;i++){
				var __tempMethodName__ = this.methods[i];
				if(!this.obj[__tempMethodName__]){
					throw new Error("方法未完全实现");
					return false;
				}
			}
			alert("方法全部被实现了");
		}
		else{
			throw new Error("对象不存在");
		}
	}
}

 

测试demo.html

<script type="text/javascript" src="../js/coke.js"></script>
		<script type="text/javascript">
		window.onload = function(){
			var ss = new Object();
			ss.sayHellow = function(){
				
			}
			ss.run = function(){
				
			}
			
			var ints = new Interface(ss,['sayHellow','run']);
			}		
		</script>
	</head>

 

虽然实现了,可是还有一些不太理想的地方.

1.比如ss.sayHellow 就只能用 object() new 出来么?如果有人写

var ss = function(){};
ss.prototype.sayHellow = function(){
	...
}

怎么办???

2.中间的反射检查是否过多过细?会不会有性能方面的问题???

留下这些问题,继续考虑,同时也希望各位大牛给我点意见来优化这个代码.

 

1
0
分享到:
评论

相关推荐

    JavaScript接口实现代码 (Interfaces In JavaScript)

    这种方法提供了一种静态类型语言中接口检查的近似,但请注意,JavaScript是一种动态类型语言,这种实现并不完全等同于强类型的接口概念,它依赖于开发者的自律和代码审查来确保正确性。 总结: 在JavaScript中,...

    基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构

    基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构

    JavaScript设计模式之接口.doc

    JavaScript 设计模式中的接口是一种重要的概念,虽然JavaScript本身并不直接支持接口定义,但它可以通过模拟其他面向对象语言的接口实现方式来实现类似的功能。接口的主要作用是定义一组必须被实现的方法,确保不同...

    javascript设计模式 接口介绍.docx

    鸭子模型是动态类型语言中常见的接口实现方式。它基于行为而不是结构来判断一个对象是否符合某个接口。如果一个对象具有接口规定的所有方法和属性,并且行为一致,那么就认为它实现了该接口。在JavaScript中,这是最...

    百度翻译API接口JavaScript版

    百度翻译API接口JavaScript版是百度提供的一项服务,允许开发者通过JavaScript编程语言在网页上实现便捷的翻译功能,为用户提供多语言之间的文本互译。在这款API中,百度结合了强大的自然语言处理技术,使得开发者...

    Android WebView与JavaScript交互实现Web App

    在这个主题中,我们将深入探讨如何在Android中加载assets目录下的HTML文件,并通过WebView实现与JavaScript的交互。 首先,我们要了解`WebView`的基本用法。在Android布局文件中,我们添加一个WebView组件: ```...

    JavaScript设计模式之接口.docx

    3. 缺乏编译时检查:不像静态类型语言,JavaScript在编译时不会检查接口实现,需要开发者手动进行验证。 在实践中,为了平衡这些优缺点,开发者可以选择在开发阶段使用接口检查,而在生产环境中根据性能需求决定...

    Javascript面向对象特性实现(封装、继承、接口).doc

    在JavaScript中,可以通过闭包来实现封装,就像示例中的`book`函数。在这个例子中,`COUNT`变量和`checkISBN`方法是私有的,只能在构造函数内部访问。`ctor`构造函数通过`this`关键字创建了公有方法,如`setId`、`...

    基于JavaScript和TypeScript的母婴用品交易平台yierbao_api接口实现设计源码

    本项目为基于JavaScript和TypeScript开发的母婴用品交易平台——yierbao_api的接口实现设计源码,总计包含1408个文件,其中包括649个JavaScript文件、243个Markdown文件、183个JSON文件、35个TypeScript文件、29个...

    JavaScript 调用wsdl示例

    本示例主要介绍如何在JavaScript中使用不同的库和方法来实现这一功能。 首先,理解WSDL是关键。WSDL是一种XML格式的规范,用于描述Web服务以及如何访问这些服务。它定义了服务的位置、可用的操作以及如何通过SOAP...

    JavaScript接口的实现三种方式(推荐)

    标题中提到的“JavaScript接口的实现三种方式”,实际上在内容中介绍了四种方式:注释法、检查属性法、鸭式辨形法和接口类。下面我将详细阐述这些知识点。 1. 注释法:这是一种非正式的接口定义方式,它通过在代码...

    百度地图 接口 源码 javascript

    标题中的“百度地图接口源码javascript”指的是使用JavaScript...通过深入学习和实践百度地图的JavaScript接口源码,开发者不仅可以创建各种地图应用,还可以结合自己的业务需求,扩展和优化地图功能,提高用户体验。

    javascript实现串口通信(亲身测试).zip_MSComm 判断 通_js串口r232_touchu5v_上位机_串口通

    "js串口r232"指的是使用JavaScript实现的R232串行通信接口。R232是早期的串行通信标准,虽然现在已被其他标准取代,但仍然广泛存在于各种设备中,如PLC、工控机等。在JavaScript中模拟R232通信,通常需要借助第三方...

    Javascript中调用C++函数

    NPAPI插件也需要在C++中编写,并且必须实现特定的接口以供JavaScript调用。不过,NPAPI的使用已经大大减少,因此这里不再详细介绍。 **4. 更现代的方法:** 现代浏览器更倾向于使用WebAssembly(WASM)和WebIDL来...

    android中实现JavaScript与Java之间实现互相调用

    这个过程通常涉及到Android的WebView组件和JavaScript接口的实现。以下是对这一主题的详细讲解。 一、WebView组件介绍 WebView是Android SDK提供的一种用于在应用内展示网页内容的控件。它不仅可以加载URL,还能...

    javascript 中文帮助文档

    在JavaScript中,基本的数据类型包括字符串、数字、布尔值、null、undefined、对象和Symbol。其中,字符串是不可变的字符序列,可以使用模板字面量来方便地创建和操作;数字包括整数和浮点数,可以用十进制、八进制...

    javascript调用delphi中的函数

    4. **Delphi实现COM接口**:在Delphi中,你需要定义一个接口(如`IMyExternal`),并在Delphi的类中实现这个接口。接口定义了对外暴露的方法和属性。Delphi的项目设置需要配置为生成COM兼容的代码。 5. **注册COM...

    浅谈JavaScript中的接口实现

    但问题在于,在JavaScript的世界中,没有内置的创建或实现接口的方法,也没有可以判断一个对象是否实现了与另一个对象相同的一套方法,这使得对象之间很难互换使用,好在JavaScript拥有出色的灵活性,这使得模拟传统...

    接口测试工具V1.0.hta

    在这个场景中,我们有一个名为“接口测试工具V1.0.hta”的工具,它是一个使用JavaScript语言实现的轻量级HTTP接口测试小程序。该工具特别适用于Windows操作系统,用户只需双击即可启动使用。 JavaScript,通常简称...

Global site tag (gtag.js) - Google Analytics