面向对象
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/.NET Framework中的服务器端编程技术引入到客户端框架,从而带来了客户端编程的丰富特性。本书主要阐述ASP.NET AJAX是如何在客户端模拟这些丰富特性的。 本书通过大量实例、深入的描述以及...
第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 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面关键字 网站首页的自动语言切换 应用系统的多...
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 ...
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...
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 ...
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 ...
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 ...
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 ...
第8章 控件客户端编程模型 297 8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 ...
第8章 控件客户端编程模型 297 8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 ...
第8章 控件客户端编程模型297 8.1 asp.net服务端控件对客户端的支持297 8.2 clientscriptmanager类功能详解301 8.2.1 registerarraydeclaration方法301 8.2.2 registerclientscriptblock方法302 8.2.3 ...
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 ...
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设计模式》是为那些熟悉.net框架但希望了解如何改进编码方式以及如何运用设计模式、设计原则和最佳实践来提高代码的可维护性和适应性的...
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实现 外部控件引发局部刷新...
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 ...
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实现 外部控件引发局部刷新...