- 浏览: 194030 次
- 性别:
- 来自: QD
文章分类
- 全部博客 (127)
- Struts2 (8)
- Web (27)
- 计算机基础 (2)
- 面试 (2)
- JQuery (4)
- MySQL (1)
- SQL (1)
- AJAX (3)
- Java (17)
- Javascript (36)
- 情感 (0)
- Oracle (7)
- Spring (5)
- FreeMarker (2)
- JSON (1)
- 表达式 (1)
- 线程 (4)
- WebService (10)
- MyEclipse (2)
- LDAP (1)
- Tomcat (1)
- NIO (1)
- Linux (1)
- ExtJS (4)
- Android (1)
- Dojo (2)
- Maven (9)
- Ant (7)
- 分布式 (1)
- Intellij IDEA (1)
最新评论
-
northc:
米饭军 写道如果文件已存在怎样避免应该会覆盖的
用Ant scp往远程linux传文件 -
米饭军:
如果文件已存在怎样避免
用Ant scp往远程linux传文件 -
luis025:
不支持列隐藏 硬伤
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1) -
rgbhje:
楼主大神,我把你的代码简单改了一小下,在4.2可以跑了
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
接口:规定一组规则,但不限定实现这些规则的具体方法,实现这些接口的类必须具有接口所规定的方法。
接口与抽象类的区别:简单而言,类与接口的关系为a live b can do something,类与抽象类的关系为a is b,so a can do anything b can,另外,抽象类除了虚函数也可以有实现了的方法。
js中模拟根据“鸭式辨型”来模拟接口。
1.鸭式辨型:像鸭子一样走路并呱呱叫的就是鸭子,判断一个类或对象是否实现了一个接口,就检查这个类或对象是否具有接口中规定的所有方法。
2.js对象的反射机制:在程序运行过程中,可以动态检测一个类或对象具有哪些方法和属性,并可以动态执行这些方法,js对象可以用for in 来检测其成员。
for(var pro in obj)
{ //列出obj对象的属性,属性名称pro,属性值obj[pro]
document.write(pro +":"+ obj[pro] + "<br />");
}
for in 在IE和Firefox中的不同:for in 不会列出对象的默认存在的属性,如果默认属性被重写,在Firefox下会被列出,在IE下则不会。
3.检测对象的继承关系 instanceoffunction Person(name,age,sex)
{
this.name=name;
this.age=age;
this.sex=sex;
}
var lily = new Person('lily',25,'female');
if(lily instanceof Person)
{
alert('lily 继承自 Person');
}
因为任何js对象都继承自Object对象,因此对于任何js对象obj下式为true:
obj instanceof Object
js对象的易变性:js对象的属性可以被动态修改,因此即使(A instanceof B)为true,也不能保证A具有和B一样的属性,因为A从B继承来的属性可能在使用中被修改或删除掉(在C++中一个实例化的对象是不能被修改的)。
4.接口构造器/*
Interface函数作为接口的构造器,接收2个参数,第一个为接口名称,第二个为接口要约定的一系列方法
*/
var Interface = function(name, methods)
{
if(arguments.length != 2){
throw new Error("至少需要2个参数");
}
this.name = name;
this.methods = [];
for(var i = 0, len = methods.length; i < len; i++)
{
if(typeof methods[i] !== 'string'){
throw new Error("请使用字符串来描述接口所约定的方法.");
}
this.methods.push(methods[i]);
}
};
/*
用于检查一个对象是否实现了接口,该方法接受多个object类型参数,第一个为需要检查的对象,其余参数为该对象期望实现的接口
这是一个静态方法,这个检查方法不能被一个接口实例继承
因为不是定义在接口构造器内,也不是通过Interface.prototype来定义的*/
Interface.ensureImplements = function(object)
{
if(arguments.length < 2) { throw new Error("至少需要2个参数"); }
//第一个参数object是类,第二个开始时类所要实现的接口
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]=="undefined" || typeof object[method] !== 'function')
{
throw new Error("接口检查: object 没有实现接口 " + interface.name + "名为" +method+ " 的方法");
}
} //end for j
} // end for i
}
5.使用接口构造器构造接口和检查对象是否实现了接口
var interface_1 = new Interface('interface_1', ['add', 'remove', 'getChild']);
var interface_2 = new Interface('interface_2', ['getValue']);
function Aclass(){
this.interfaces = ["interface_1","interface_2"];//该类自称实现了2个接口
this.method_1=function(){}
this.method_2=function(){}
this.add=function(){}
this.remove=function(){}
this.getChild=function(){}
}
var myClass = new Aclass();
//使用myClass是可以检查识别它实现的接口: myClass.interfaces
//严格检查myClass是否真的实现了interface_1接口和interface_2接口
Interface.ensureImplements(myClass, interface_1, interface_2);
6.接口检查或多或少都会影响性能,接口检查可以在开发中启用,在发布时关闭
使用程序之前引入一个配置文件:Conf.js,该文件在window对象下建立一个命名空间,并把一些配置参数写在该命名控件下。
Conf.js 内容:
CONF={ debugMod:true, ... }
根据debugMod来决定是否检查接口:
if(CONF.debugMod){
Interface.ensureImplements(myClass, interface_1, interface_2);
}
发表评论
-
Ext Toolbar换行
2012-06-21 09:02 01.var oneTbar=new Ext.Toolba ... -
禁止select控件選擇
2012-06-20 20:06 0禁止select控件選擇 大家知道, 對於HTML控件 ... -
几种压缩算法原理介绍
2012-05-25 20:04 1363先给出一个JS实现的ZIP:http://stuartk ... -
ExtJS4.0 分享Grid导出Excel插件(3.28更新支持4.1)
2012-03-12 17:00 10894需要将ExtJS Grid 导出 Excel 的同学可以试一试 ... -
Ext Js 4.x 扩展自己的XType
2012-03-03 14:26 1558如果想用自己定制的XType(比如这里想用一个Obj存 ... -
(转)Javascript中大括号“{}”的多义性
2012-02-25 11:21 1011JS中大括号有四种语义作用语义1,组织复合语句,这是最常 ... -
function sleep
2012-02-17 19:16 888//毫秒 (function sleep(t){ ... -
不用递归,循环算0-9999之和(js)
2012-02-17 19:15 895var i=0,sum=eval(new Arra ... -
Augment.js 为旧浏览器增加现代Javascript的功能支持
2012-01-18 12:06 1076index: http://olivernn. ... -
Javascript中的~和~~
2011-12-30 15:58 883<script type="text/j ... -
js中的onchange和onpropertychange
2011-12-28 11:26 1846当一个HTML元素的属 ... -
parentNode、parentElement,childNodes、children
2011-12-26 17:38 933parentNode、parentElement,childN ... -
关于JS中的constructor与prototype
2011-12-22 19:53 1014我们都知道,在JS中有一个function的东西。一般人 ... -
各浏览器对document.getElementById等方法的实现差异
2011-12-21 13:15 933本文来自:http://www.cnblogs.com/sna ... -
全世界最短的IE判定
2011-12-20 15:45 806var ie = !-[1,]; ... -
document.getElementsByClassName的理想实现
2011-12-20 14:41 1441来自: 司徒正美 blog http://www.cnblo ... -
浏览器支持的JS版本及JS对象图
2011-12-20 10:38 1083来自zh.wikipedia.org的JavaScript ... -
JS判断浏览器能力
2011-12-15 20:47 1054对象/特征检测法 该方法是一种判断浏览器能力(而非浏览器 ... -
onunload和onbeforeunload区别
2011-12-15 18:54 974Onunload,onbeforeunload都是在刷 ... -
收藏的两个多tab切换
2011-12-13 19:02 954留着可能以后有用
相关推荐
这篇博文将深入探讨如何在JavaScript中模拟接口,以及如何利用这些技术来提高代码的可维护性和扩展性。 首先,理解JavaScript的核心特性是关键。JavaScript基于原型继承,这意味着对象可以从其他对象继承属性和方法...
- 接口与抽象类:讲解在JavaScript中模拟接口和抽象类的实现策略。 9. **错误处理与调试** - 错误类型与try...catch:了解JavaScript中的错误类型,以及如何通过try...catch处理异常。 - 调试技巧:分享Chrome ...
但这并不意味着我们不能在JavaScript中模拟接口。下面我们将探讨如何在JavaScript中实现接口以及如何确保类正确地实现了它们。 首先,我们可以使用注释来声明接口,就像下面的例子所示: ```javascript /* ...
在JavaScript中,虽然没有像Java或C#那样的显式接口定义,但我们可以通过使用对象的原型链来模拟接口的概念。在JavaScript中,接口可以通过定义一个对象的属性来指定,这些属性是方法,其值是函数。然后,任何继承或...
JavaScript设计模式中的接口是软件开发中的一个重要概念,它在面向对象编程中起到规范和约定的作用。在强类型语言中,接口通常由语言本身提供支持,但在JavaScript这种动态类型的脚本语言中,没有内置的接口机制。...
然而,通过一些特定的实现策略,开发者可以在JavaScript中模拟接口的行为。 首先,我们讨论的是使用注释的方法实现接口。这种方法非常简单,但功能有限。它利用了注释而非JavaScript语言中的实际语法结构来模拟接口...
然而,JavaScript没有内置的接口关键字,这意味着我们需要通过某种方式来模拟接口。 在JavaScript中实现接口的一种常见方法是使用类和原型。我们可以创建一个空的构造函数(接口类),并定义其原型上的方法作为接口...
开发者需要使用一些技巧来模拟接口的行为。一种常见的方法是通过创建一个"接口"对象,其中包含了期望的方法名,然后检查目标对象是否拥有这些方法。例如,我们可以定义一个`MyInterface`对象,包含所有需要的方法名...
不过,这并不妨碍在JavaScript中模拟接口的实现。我们可以采用几种方法来实现接口,尽管它们都不具备语言层面的强制性。 首先,我们可以使用注释来模拟接口,这是最简单但也是最弱的一种实现方式。通过在代码中使用...
js-interface介绍在做一个前后分离的项目时,有些头疼 Api 之类的东西要怎么管理,在阅读 一书时,第二章提到了在 JavaScript 中模拟接口 (interface) 的概念,以方便使用众多设计模式,因此尝试着做一个接口的模拟...
在“接口测试的demo”项目中,我们重点关注的是使用JavaScript进行接口测试的方法。JavaScript是一种广泛用于前端开发的动态编程语言,但在现代Web开发中,它也被用于服务器端(例如Node.js环境)以及自动化测试场景...
在这个项目中,“Javascript 电影购票,模拟3D场景”利用JavaScript的技术力量,为用户构建了一个逼真的电影院环境,让用户能够从不同的角度预览座位,从而提升购票体验。 首先,我们来详细探讨JavaScript在3D场景...
标题中的“delphi google V8 脚本引擎接口 delphi程序 最佳 javascript 途径”指的是一项技术实践,即在Delphi编程环境中利用Google的V8 JavaScript引擎创建脚本接口,以实现高效的JavaScript交互。V8是Google开发的...
jQuery Mockjax是一款强大的JavaScript库,专门设计用于在开发和测试过程中模拟AJAX(Asynchronous JavaScript and XML)请求和响应。这个插件对于那些依赖于AJAX交互的前端应用尤其有用,因为它可以在没有后端...
6. **数据模拟**:允许模拟接口返回的数据,便于在开发阶段进行测试。 为了实现这些功能,开发者可能还需要用到其他技术,如JSON Schema用于接口定义,axios或fetch用于发送网络请求,以及数据库技术如SQLite或...
在 JavaScript 中,我们可以使用一些技巧来模拟接口的行为。我们可以创建一个对象,该对象包含了一组方法,然后使用该对象来定义接口。例如,我们可以创建一个接口对象,如下所示: ```javascript var Interface = ...
在本文中,我们将深入探讨JavaScript模拟桌面涉及的关键技术和知识点。 首先,我们要理解JavaScript的基础。JavaScript是一种广泛应用于网页开发的解释型编程语言,它主要负责处理客户端的交互。在模拟桌面项目中,...
标题中的“可用模拟攒机,模拟模拟中关村攒机系统”表明这是一个可以模拟中关村电脑组装流程的应用或服务。这种系统通常用于教学、测试配置或者让用户在购买前预览不同硬件组合的效果。模拟攒机软件通常包括各种硬件...
源代码可能包括一个或多个JavaScript文件,用于实现模拟逻辑和WebGL接口;可能还有一个HTML文件用于构建页面结构,以及CSS文件来管理样式。资源文件可能包含图像、纹理或其他数据,用于增强模拟的视觉表现。README...
2. **模拟接口**:介绍如何在JavaScript中通过构造函数、原型链或者ES6的类来模拟接口,确保对象符合特定的结构和行为。 3. **类型检查库**:可能会提及TypeScript,这是一种JavaScript的超集,它引入了类型系统,...