var Interface = function(interfaceName,interfaceMethods){
if(arguments.length!=2){
alert("Interface expected 2 arguments,one is for Interface Name, and the other is the Array for methods ")
}
this.interfaceName = interfaceName;
this.interfaceMethods = new Array();
for(var i = 0;i < interfaceMethods.length;i++){
if(typeof interfaceMethods[i] !== "string"){
alert("Interface constructor expects each method name to be passed in as a string");
break;
}
this.interfaceMethods.push(interfaceMethods[i])
}
}
Interface.CheckImplements = function(object,interfaces){
if(arguments.length!=2){
alert("Interface expected 2 arguments,one is for Interface Name, and the other is the Array for methods ")
}
for(var i=0;i,i<interfaces.length;i++){
//alert(interfaces[i])
if(interfaces[i].constructor !== Interface){
alert("the interface expects to be created from Interface")
break;
}
var interface = interfaces[i];
for(var j=0;j<interface.interfaceMethods.length;j++){
method = interface.interfaceMethods[j];
if(!object[method]||(typeof object[method]!="function")){
alert("object for the method '"+method+ " ' is not found for Interface '"+ interface.interfaceName+ " '")
break;
}
}
}
}
var PersonInterface = new Interface("PersonInterface",["display","walk","eat","shout"]) //定义一个接口
var Person = function(){
this.display = function(){
}
this.eat = function(){
}
this.shout = function(){
}
}
person = new Person();
Interface.CheckImplements(person,[PersonInterface])
//会弹出对话框object for the method 'walk ' is not found for Interface 'PersonInterface '
//注明,这似乎要在Person对象被创建后才能检测,这相当于后绑定,用一个函数来检测,这似似乎是一个缺陷,如何使用早期绑定,这正是要研究的一个题目。
分享到:
相关推荐
本文实例讲述了JavaScript面向对象中接口实现方法。分享给大家供大家参考,具体如下: 接口是面向对象编程的基础,它是一组包含了函数型方法的数据结构,与类一样,都是编程语言中比较抽象的概念。比如生活中的接口...
本文实例讲述了Javascript面向对象程序设计工厂模式。分享给大家供大家参考,具体如下: 工厂模式和单例模式(https://www.jb51.net/article/184230.htm)应该是设计模式中应用最多的模式了,工厂模式的定义:提供...
lang.js是Javascript面向对象编程的扩展库,支持包、类的定义和函数重载等功能,接口简洁规范,易用性强,压缩包内包含文档示例和带注释的源码,欢迎下载试用。
2.2 设计接口时使用抽象思维 33 2.3 尽可能为用户提供最小接口 35 2.3.1 确定用户 35 2.3.2 对象行为 36 2.3.3 环境约束 36 2.3.4 明确公共接口 36 2.3.5 明确实现 37 2.4 小结 37 2.5 参考书目 38 第3章 ...
要我说,只要把具体实现给打包,对外提供调用接口那就是封装,方法也好、类也好就做了这些事。 javascript中的function可以用来创建方法、也可以用来创建类,实际上我们可以认为是用function来模拟出的类(说到类...
面向对象:对象作为程序的基本单元,程序分解为数据和相关操作 二、类、对象 类:对具有相同特性和特征事物的抽象描述 对象:某种类型对应的具体事物 三、面向对象的三大特性 封装:隐藏实现细节,实现代码模块化 继承...
主要介绍了JavaScript面向对象之七大基本原则,结合实例形式详细分析了JavaScript面向对象七大基本原则,包括单一职责、开闭原则、里氏替换、依赖倒置、接口隔离、迪米特法则及组合/聚合复用原则,需要的朋友可以参考下
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现 深入理解JavaScript系列(19):求值策略 深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解 深入理解JavaScript系列(21):S.O.L....
七巧板一个用于 JavaScript 中无类面向对象编程的库。 我曾经认为 JavaScript 的重要创新是原型继承。 我现在认为它是无类的面向对象编程。 我认为这是 JavaScript 给人类的礼物。 这就是使它真正有趣、特别和重要的...
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现 深入理解JavaScript系列(19):求值策略 深入理解JavaScript系列(20):《你真懂JavaScript吗 》答案详解 深入理解JavaScript系列(21):S O L I...
接口是面向对象Javascript工具箱中最有用的特性之一。我们都知道GOF在设计模式中说到:面向接口编程,而非面向实现编程
Javascript-DOM 文档对象模型(DOM)是HTML和XML文档的编程接口。 它代表页面,以便程序可以更改文档的结构,样式和内容。... DOM是网页的面向对象的表示形式,可以使用诸如JavaScript之类的脚本语言进行修改。
一般的面向对象程序语言,有两种继承方法——接口继承(interface inheritance)和实现继承(implementation inheritance)。接口继承只继承方法签名,而实现继承则继承实际的方法。在JavaScript中,函数没有签名,...
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。...Jsoncpp是一个使用C++语言实现的面向对象的json库,以静态库的形式提供,使用非常简单。 Jsoncpp提供的接口中有3个核心类:Reader、Writer、Value。
没有内置的创建或实现接口的方法,也没有可以判断一个对象是否实现了与另一个对象相同的一套方法,这使得对象之间很难互换使用,好在JavaScript拥有出色的灵活性,这使得模拟传统面向对象的接口,添加这些特性并非...
18.面向对象编程之ECMAScript实现 19.求值策略 20.《你真懂JavaScript吗?》答案详解 21.S.O.L.I.D五大原则之接口隔离原则ISP 22.S.O.L.I.D五大原则之依赖倒置原则DIP 23.JavaScript与DOM(上)——也适用于新手 24....
1.7 学习和使用JavaScript的几点建议 1.8 关于本书的其余部分 第2章 浏览器中的JavaScript 2.1 嵌入网页的可执行内容 2.2 赏心悦目的特效 2.3 使用JavaScript来与用户交互 2.4 绕开脚本陷阱 ...
接口是面向对象编程里的重要特性,遗憾的是JavaScript并没有提供对接口的支持!怎么实现接口呢?
虽然面向对象编程(Object-oriented programing)主导着业界,但很明显这种范式在 JavaScript 里非常笨拙,用起来就像在高速公路上露营或者穿着橡胶套鞋跳踢踏舞一样。我们不得不到处使用 bind 以免 this 不知不觉地...