剖析asp_netajax的面向对象思想__net技术_评论_it专家网_第1页
剖析asp_netajax的面向对象思想__net技术_评论_it专家网_第2页
剖析asp_netajax的面向对象思想__net技术_评论_it专家网_第3页
剖析asp_netajax的面向对象思想__net技术_评论_it专家网_第4页
剖析asp_netajax的面向对象思想__net技术_评论_it专家网_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、天极传媒:比特网天极网it专家网it商网52pk游戏网手机天极it分众您现在的位置:it专家网web服务子站.net技术剖析asp.net ajax的面向对象思想作者:佚名,出处:中国it实验室,贲任编辑:包春林,2008-04-30 04:00人们期待已久的asp.net ajax v1.0正式版终于发布了。现在你能用microsoft asp.net ajax的javascript很容易的写出丰富的、交互式的web应用。人们期待已久的asp.net ajax v1.0正式版终于发布了。现在你能用microsoft asp.net ajax的javascript很容易的写出丰富的、交互式的w

2、eb应用。尤其值得关注的 是microsoft ajax library增加了而向对象的支持,而以前javascript是不支持面向对象开 发的。现在icrosoft ajax library能很好的支持类、名字空间、继承、接口、枚举、反射 等特征。这些新增加的功能类似于.net framework,这使得开发asp.net ajax应用变 得容易维护,容易扩充。现在我们看看microsoft ajax library是如何支持以上特征的。1 类、成员和名字空间在 microsoft ajax library 中,所有的 javascript 类都继承自 object(类似于.net fram

3、ework库,都继承h object),在asp.net ajax应用屮你可以运用面向对象的编程 模式创建继承自microsoft ajax基类的对象和组件,类冇四种成员:字段、属性、方法、 事件。字段和属性是名/值对,用于描述一个类的一个实例的特性的。字段是由简单类型构 成且可直接访问,例如:myclassl nstan ce.n ame=”fred”。属性可以是任何简单类型或引用类型,通过get和set方法访问。在asp.net ajax 中,get和set是独立的函数,并规定在函数名中使用前缀”get_”或”set_”,例如要获取或 设置cancel属性的值时,你可以调用get_canc

4、el或set_cancel方法。一个方法是完成一个活动的函数而不是返回一个属性的值。属性和方法在下而的例子 里都有示范。事件指示特指的动作发生。当一个事件发牛时,它可以调用一个或多个函数。事件所 冇者可以完成等待事件发生的任何任务。名字空间是对关联类的逻辑分组。名字空间使你可以对公共功能进行分组。为了使asp.net web页面具有asp.net ajax功能,你必须添加控件到页面上, 当页面启动时,参照asp.net ajax库的脚本占动产牛。下面的例子显示了页面使用了控件o< asp:scriptmanager runat=hserverh id=hscriptmanagerh /&

5、gt;下面的例子演示了如何使用type.registernamespace和.registerclass方法來把 person类增加到demo名字空间中、创建类然后注册类。type.registernamespace("demoh);demo.pers on = function (firstname, lastname, emailaddress) this.irstname = firstname;this.jastname = lastname;this._emailaddress = emailaddress;demo.ptotype = getfirstn

6、ame: function() return this.irstname;,getlastname: function。return this.jastname;,getname: function() return this.irstname +11 + this.jastname;,dispose: function() alert('bye 1 + this.getname();在脚本文件namespace.js中定义了类person,制定了类的名字空间为"demo%运 彳j页而namespace.aspx,点击按钮将创建一个demo.person类的实例。2 访问修饰

7、许多而向对彖编程语言都有访问修饰的概念。允许你指定类或成员在某种范围内有 效。例如对在外部执行的程序、具有相同名字空间的内部类或特指的代码快內的类等。在 javascript中没有访问修饰,但在asp.net ajax中约定以下划线字符开头的被认为 是私有的,类的外部不能访问。3 继承继承是一个类派生于另一个类的能力。派生类口动继承基类的所有字段、属性、方法 和事件。派生类可以增加新的成员或者重写基类已存在的成员来改变成员的行为。下血的脚木实例有两个类person和employee, employee从person继承而来,两 个类示范了私有字段的使用,它们都有公共属性、方法。另外employ

8、ee类重写了 person 类的tostring实现,并调用了基类的功能。type.registernamespace(ndemoh);demo.pers on =function(firstname, lastname, emailaddress) this.irstname=firstname;this.jastname=lastname;this._emailaddress = emailaddress; demo. ptotype = getfirstname: function() return this.irstname;, getlastname: functi

9、on() return this.jastname;,getemailaddress: function() return this._emailaddress;,setemailaddress: function(emailaddress) this._emailaddress = emailaddress;,getname: function() return this.irstname + 八 + this.jastname;,dispose: function() alert(*bye 1 + this.getname();,sendmail: function() var email

10、address = this.getemailaddress();if (emailaddress.indexof('') < 0) emailaddress = emailaddress + 'examplecom:alert(,sending mail to 1 + emailaddress + 1,tostring: function() return this.getname() + 1 (* + this.getemailaddress() + 丁;demo.employee = function(firstname, lastname, emailad

11、dress, team, title) demo.employee.initializebase(this, firstname, lastname, emailaddress); this._team = team;this._title = title;demo. etotype = getteam: function() return this._team;,setteam: function (team) this._team = team;,gettitle: function() return this._title;,settitle: function (

12、title) this._title = title;,tostring: function() return demo.employee.callbasemethod(this, lostring1) +、rrt + this.gettitle() + rry + this.getteam();demo.employee.registerclass(,demo.employee', demo.person);inheritance.js 脚本文件中定义了两个类:person 和 employee, employee 是从 person 继承而来。每个类都有字段、公共属性和方法。另外,

13、employee类重写了 tostring的实 现,并在重写的代码屮调用了基类的功能。在这个例了中把类person的名字空间设定为 ”demo”。运行页面inheritance.aspx,点击“创建对象”、“对象释放”、“公共和私有属性”、 “对象方法”、“重写方法”,“对象类型检杏”体验一下。4接口接口是类要实现的逻辑协议,是对类进行集成的公共遵导的规范。它能使多个类和同 一个接口把实现定义和类的具体实现结合起来。下而的例了定义了一个基类tree和接口 ifruittree, apple和banana这两个类实现了接口 ifruittree,但pine类没有实现接口 ifruittreeot

14、ype.registernamespace(hdemo.treesh);demo.treesfruittree = function() demo.trees.lfruittree.prototype = bearfruit: function()demo.trees jfruittree.registerlnterfacecdemo.treesf ruittree1);demo.trees.tree = function(name) this._name = n ame;demo.t rees.t totype = returnname: function() return t

15、his._name;,tostringcustom: function。return this.returnname();,make leaves: fun ction() demo.trees.fruittree = function(name, description) demo.trees.fruittree.initializebase(this, name);this._description = description;demo.trees.fruitttotype.bearfruit = function() return this._description;dem

16、o.trees.fruittree.registerclassfdemo.trees.fruittree1, demo.trees.tree, demo.treesfruittree);demo.trees.apple = function() demo.trees.apple.initializebase(this, 'apple; 'red and crunchy1);demo.t rees. atotype = makeleaves: function() alert(,medium-sized and desiduous1);,tostringcusto

17、m: function() return truittree 1 + demo.trees.apple.callbasemethod(this5 ,tostringcustom1);demo.trees.apple.registerclass(,demo.trees.apple*, demo.trees.fruittree);demo.trees.grannysmith = function() demo.trees.grannysmith.initializebase(this);/ you must set the _description feild after initializeba

18、se/ or you will get the base value.this._description = 'green and sour1;demo.trees.grannystotype.tostringcustom = function() return demo.trees.grannysmith.callbasemethod(this, 'tostringcustom1) + 1 .its grannysmith!1;demo.trees.gra nn ysmith.registerclasscdemo.trees.gra nn ysmith:dem

19、o.trees. apple);demo.t rees.banana = function (description) demo.trees.banana.initializebase(this, *banana; 'yellow and squishy1);demo.trees.btotype.makeleaves = function() alert(,big and green');demo.t rees.banana.registerclass('demo.t rees. banana;demo.trees.fruittree);demo.tr

20、ees.pine = function。demo.trees.pine.initializebase(this, 'pine');demo.trees.ptotype.makeleaves = function() alertcneedles in clusters');demo.trees.pine.registerclass('demo.trees.pine', demo.trees.tree);interface.js脚本文件中定义了一个tree基类和一个ifruittree接口。apple和banana 两个继承类实现了 ifruittree接口,而p泊e类没有实现ifruittree接口。运行interface.aspx,点击“对彖创建”、“接口检查”、“调用接口方法”体验一下。5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论