`
lianxiangbus
  • 浏览: 527712 次
文章分类
社区版块
存档分类
最新评论

Asp.net Ajax 客户端编程—面向对象

阅读更多

面向对象

Asp.net Ajax的客户端框架扩展了Javascript语言。扩展了Javascript的6个原生对象的方法,添加了许多.Net程序员熟悉的方法。如:string.format()。

额们知道Javascript是基于对象的,并没有完全支持面向对象。很多面向对象的特性在Javascript里面是没法实现的:继承,多态,抽象,接口。正是这些软肋导致了许多大型的程序无法用Javascript来进行开发。但是这种时代已经结束了!接下来我们就来一一描述如何用Asp.net Ajax客户端框架开发出面向对象的程序,以及该框架是如何实现面向对象中的那几个重要概念。

命名空间

在Asp.net Ajax客户端框架中可以这么定义命名空间:

Type.registerNamespace(“MyNamespace”);

这里的类不能单独的定义,必须把类包装进命名空间中。就是在定义类的时候必须先定义命名空间。


registerClass方法的详细使用情况:

registerClass(类名[字符型])

registerClass(类名[字符型],父类[对象])

registerClass(类名[字符型],接口[对象])

registerClass(类名[字符型],父类[对象],接口[对象])

接口

面向对象编程的核心技术,面向对象的编程精髓就是让程序解耦。针对抽象编程,针对接口编程都是实现程序解耦的重要手段,所以接口在OO世界里是非常的重要滴。

定义接口:


实现接口:


这里的接口是伪接口,并没有像C#这类真正面向对象语言中的那么强大。它没法实现真正意义上的“针对接口编程”。但是如果我们结合框架中的反射方法还是能基本实现“针对接口编程”。看代码:


枚举

定义枚举:


使用枚举:

Alert(CapType.YellowCap);//使用的时候无需实例化,直接使用。

继承

在继承中主要有以下比较重要的概念:1.调用父类的方法;2.覆盖父类的方法;3.抽象方法。


反射

这里的反射并没有那么强大,框架中的反射更像是用来修补面向对象框架中产生的缺陷。

测试代码:


方法调用结果(在上面这段代码的基础上调用方法)

方法名称

方法简介

示例代码

getName

获取类的名字

var myType=people;

alert(myType.getName());

结果:

People

isClass

判断一个对象是否为类

alert(Type.isClass(employee));

结果:

True

isNamespace

是否为命名空间

Type.registerNamespace('MyNamespace');

alert(Type.isNamespace(MyNamespace));

结果:

true

getInterfaces

获取某一对象的所有接口

employee.registerClass('employee',people,IWork,IFavorite,Iabc);

var iArray=employee.getInterfaces();

for(var tmp in iArray)

{

alert(iArray[tmp].getName());

}

结果:

IWork,IFavorite,Iabc

isInterface

是否为接口

alert(Type.isInterface(IWork));

结果

True

getBaseType

获取顶层父类constructor

//alert(employee.getBaseType())

结果:

function(firstName,lastName)

{

this._firstName=firstName;

this._lastName=lastName;

};

initializeBase

调用父类的构造函数

resolveInheritance

手动解决继承问题,通过拷值的方法。

callBaseMethod

调用父类的某个方法

getBaseMethod

获取父类的某个方法的定义

//alert(employee.getBaseMethod(jim,'ToString'));

结果:

function() {

return this._firstName+' '+this._lastName;

}

implementsInterface

查看某对象是否实现某接口

alert(employee.implementsInterface(IWork));

结果:

true

inheritsFrom

是否继承某个类

alert(employee.inheritsFrom(people))

结果:

true

isImplementedBy

是否实现某个接口

getRootNamespaces

获取所有根命名空间

Type.registerNamespace('MyNamespace');

var nArray=Type.getRootNamespaces();

for(var tmp in nArray)

{

alert(nArray[tmp].getName());

}

结果:

Sys,MyNamespace

Parse

将序列化的内容类型化

var parseType=Type.parse('employee');

var myParseType=new parseType();

alert(parseType.implementsInterface(IWork));

alert(myParseType.Do());

结果:

true,i can do something

isEnum

是否为枚举变量

alert(Type.isEnum(MsgType));

结果:

true

isFlag

确定某个枚举变量的子类型是否支持与操作

alert(MsgType.Lower | MsgType.Normal);

alert(Type.isFlags(MsgType));

结果:

3,true

这样做有什么好处?实现几个设计模式来证明这样做的强大之处。

观察者模式:


分享到:
评论

相关推荐

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    ASP.NET AJAX将ASP.NET/.NET Framework中的服务器端编程技术引入到客户端框架,从而带来了客户端编程的丰富特性。本书主要阐述ASP.NET AJAX是如何在客户端模拟这些丰富特性的。 本书通过大量实例、深入的描述以及...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    第8章 控件客户端编程模型 297 8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 ...

    asp.net知识库

    asp.net的网址重定向方法的比较:面向搜索引擎友好 也谈 ASP.NET 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面关键字 网站首页的自动语言切换 应用系统的多...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    2.1 面向对象的术语 64 2.1.1 对象、类和实例 64 2.1.2 对象的组成 65 2.1.3 system.object 68 2.2 使用visual basic类型 68 2.2.1 值类型和引用类型 69 2.2.2 基本类型 71 2.3 命令:条件语句 72 ...

    ASP.NET3.5从入门到精通

    1.1.4 ASP.NET 客户端 1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio...

    ASP.NET 3.5 开发大全

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    ASP.NET 3.5 开发大全word课件

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    ASP.NET 3.5 开发大全11-15

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    ASP.NET 3.5 开发大全1-5

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    第8章 控件客户端编程模型 297 8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    第8章 控件客户端编程模型 297 8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 ...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    第8章 控件客户端编程模型297 8.1 asp.net服务端控件对客户端的支持297 8.2 clientscriptmanager类功能详解301 8.2.1 registerarraydeclaration方法301 8.2.2 registerclientscriptblock方法302 8.2.3 ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    1.1.5 要点5:ASP.NET是面向对象的 1.1.6 要点6:ASP.NET支持所有的浏览器 1.1.7 要点7:ASP.NET易于部署和配置 1.2 ASP.NET的演变 1.2.1 ASP.NET1.0和ASP.NET1.1 1.2.2 ASP.NET2.0 1.2.3 ASP.NET3.5 ...

    ASP.NET4高级程序设计(第4版) 3/3

    1.1.5 要点5:ASP.NET是面向对象的 7 1.1.6 要点6:ASP.NET支持所有的浏览器 8 1.1.7 要点7:ASP.NET易于部署和配置 8 1.2 ASP.NET的演变 9 1.2.1 ASP.NET1.0和ASP.NET1.1 9 1.2.2 ASP.NET2.0 9 1.2.3 ...

    ASP.NET设计模式-杨明军译(源码)

    不必管模式本身所用的语言,可以将模式用于任何面向对象编程语言。  《asp.net设计模式》是为那些熟悉.net框架但希望了解如何改进编码方式以及如何运用设计模式、设计原则和最佳实践来提高代码的可维护性和适应性的...

    亮剑.NET深入体验与实战精要2

    8.2.1 安装ASP.NET 2.0 Ajax Extensions 333 8.2.2 创建ASP.NET Ajax应用程序 333 8.2.3 ScriptManager控件使用技巧 335 8.2.4 UpdaetPanel控件使用技巧 336 8.2.5 AsyncPostBackTrigger实现 外部控件引发局部刷新...

    ASPNET35开发大全第一章

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    亮剑.NET深入体验与实战精要3

    8.2.1 安装ASP.NET 2.0 Ajax Extensions 333 8.2.2 创建ASP.NET Ajax应用程序 333 8.2.3 ScriptManager控件使用技巧 335 8.2.4 UpdaetPanel控件使用技巧 336 8.2.5 AsyncPostBackTrigger实现 外部控件引发局部刷新...

Global site tag (gtag.js) - Google Analytics