使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc

上传人:bao****ty 文档编号:132453029 上传时间:2020-05-16 格式:DOC 页数:14 大小:82.50KB
返回 下载 相关 举报
使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc_第1页
第1页 / 共14页
使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc_第2页
第2页 / 共14页
使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc_第3页
第3页 / 共14页
使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc_第4页
第4页 / 共14页
使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc》由会员分享,可在线阅读,更多相关《使用面向对象的技术创建高级 Web 应用程序 毕业论文外文文献翻译.doc(14页珍藏版)》请在金锄头文库上搜索。

1、附 录毕业设计(论文)外文资料翻译院 (系): 计算机科学与工程学院 专 业: 计算机科学与技术 班 级: 070610 姓 名: 学 号: 070610316 外文出处: 附 件: 1.译文;2.原文 2011年4月27日使用面向对象的技术创建高级 Web 应用程序面向对象编程 (OOP) 是一种流行的编程方法,很多 JavaScript 库中都使用这种方法,以便更好地管理和维护基本代码。JavaScript 支持 OOP,但与诸如 C+、C# 或 Visual Basic 等流行的 Microsoft .NET Framework 兼容语言相比,它支持 OOP 的方式非常不同,因此主要使用

2、这些语言的开发人员开始可能会觉得在 JavaScript 中使用 OOP 很奇怪而且不直观。我写本文就是为了深入讨论 JavaScript 语言实际上如何支持面向对象编程,以及您如何使用这一支持在 JavaScript 中高效地进行面向对象开发。下面首先讨论对象(还能先讨论其他别的什么呢?)。JavaScript 对象是词典 在 C+ 或 C# 中,在谈论对象时,是指类或结构的实例。对象有不同的属性和方法,具体取决于将它们实例化的模板(即类)。而 JavaScript 对象却不是这样。在 JavaScript 中,对象只是一组名称/值对,就是说,将 JavaScript 对象视为包含字符串关键

3、字的词典。我们可以使用熟悉的“.”(点)运算符或“”运算符,来获得和设置对象的属性,这是在处理词典时通常采用的方法。以下代码段: var userObject = new Object(); userObject.lastLoginTime = new Date(); alert(userObject.lastLoginTime); 功能与下面的代码段完全相同: var userObject = ; / equivalent to new Object() userObject “lastLoginTime” = new Date(); alert(userObject“lastLoginTi

4、me”);我们还可以直接在 userObject 的定义中定义 lastLoginTime 属性,如下所示: var userObject = “lastLoginTime”: new Date() ; alert(userObject.lastLoginTime);注意,它与 C# 3.0 对象初始值非常相似。而且,熟悉 Python 的人会发现在第二和第三个代码段中实例化 userObject 的方法与在 Python 中指定词典的方法完全相同。唯一的差异是 JavaScript 对象/词典只接受字符串关键字,而不是像 Python 词典那样接受可哈希化的对象。 这些示例还显示 JavaS

5、cript 对象比C+或C# 对象具有更大的可延展性。您不必预先声明属性 lastLoginTime 如果userObject没有该名称的属性,该属性将被直接添加到 userObject。如果记住 JavaScript对象是词典,您就不会对此感到吃惊了,毕竟,我们一直在向词典添加新关键字(和其各自的值)。这样,我们就有了对象属性。对象方法呢?同样,JavaScript 与 C+/C# 不同。若要理解对象方法,首先需要仔细了解一下 JavaScript 函数。JavaScript 函数是最棒的 在很多编程语言中,函数和对象通常被视为两样不同的东西。在 JavaScript 中,其差别很模糊 Ja

6、vaScript 函数实际上是具有与它关联的可执行代码的对象。请如此看待普通函数:function func(x) alert(x); func(“blah”); 这就是通常在 JavaScript 中定义函数的方法。但是,还可以按以下方法定义该函数,您在此创建匿名函数对象,并将它赋给变量 function var func = function(x) alert(x); ;func(“blah2”); 甚至也可以像下面这样,使用 Function 构造函数: var func = new Function(“x”, “alert(x);”);func(“blah3”); 此示例表明函数实际上

7、只是支持函数调用操作的对象。最后一个使用 Function 构造函数来定义函数的方法并不常用,但它展示的可能性非常有趣,因为您可能注意到,该函数的主体正是 Function 构造函数的 String 参数。这意味着,您可以在运行时构造任意函数。构造函数而不是类 前面提到过,有关 JavaScript OOP 的最奇怪的事情是,JavaScript 不像 C# 或 C+ 那样,它没有类。在 C# 中,在执行类似下面的操作时: Dog spot = new Dog(); 将返回一个对象,该对象是 Dog 类的实例。但在 JavaScript 中,本来就没有类。与访问类最近似的方法是定义构造函数,如

8、下所示: function DogConstructor(name) this.name = name; this.respondTo = function(name) if(this.name = name) alert(“Woof”); ;var spot = new DogConstructor(“Spot”);spot.respondTo(“Rover”); / nopespot.respondTo(“Spot”); / yeah!那么,结果会怎样呢?暂时忽略 DogConstructor 函数定义,看一看这一行: var spot = new DogConstructor(“Spot

9、”);“new”运算符执行的操作很简单。首先,它创建一个新的空对象。然后执行紧随其后的函数调用,将新的空对象设置为该函数中“this”的值。换句话说,可以认为上面这行包含“new”运算符的代码与下面两行代码的功能相当:/ create an empty objectvar spot = ; / call the function as a method of the empty objectDogConstructor.call(spot, “Spot”); 正如在 DogConstructor 主体中看到的那样,调用此函数将初始化对象,在调用期间关键字“this”将引用此对象。这样,就可以为

10、对象创建模板!只要需要创建类似的对象,就可以与构造函数一起调用“new”,返回的结果将是一个完全初始化的对象。这与类非常相似,不是吗?实际上,在 JavaScript 中构造函数的名称通常就是所模拟的类的名称,因此在上面的示例中,可以直接命名构造函数 Dog: / Think of this as class Dogfunction Dog(name) / instance variable this.name = name; / instance method? Hmmm. this.respondTo = function(name) if(this.name = name) alert(

11、“Woof”); ;var spot = new Dog(“Spot”);在上面的 Dog 定义中,我定义了名为 name 的实例变量。使用 Dog 作为其构造函数所创建的每个对象都有它自己的实例变量名称副本(前面提到过,它就是对象词典的条目)。这就是希望的结果。毕竟,每个对象都需要它自己的实例变量副本来表示其状态。但如果看看下一行,就会发现每个 Dog 实例也都有它自己的 respondTo 方法副本,这是个浪费;您只需要一个可供各个 Dog 实例共享的 respondTo 实例!通过在 Dog 以外定义 respondTo,可以避免此问题,如下所示: function respondTo(

12、) / respondTo definitionfunction Dog(name) this.name = name; / attached this function as a method of the object this.respondTo = respondTo; 这样,所有 Dog 实例(即用构造函数 Dog 创建的所有实例)都可以共享 respondTo 方法的一个实例。但随着方法数的增加,维护工作将越来越难。最后,基本代码中将有很多全局函数,而且随着“类”的增加,事情只会变得更加糟糕(如果它们的方法具有相似的名称,则尤甚)。但使用原型对象可以更好地解决这个问题,这是下一节的

13、主题。原型在使用 JavaScript 的面向对象编程中,原型对象是个核心概念。在 JavaScript 中对象是作为现有示例(即原型)对象的副本而创建的,该名称就来自于这一概念。此原型对象的任何属性和方法都将显示为从原型的构造函数创建的对象的属性和方法。可以说,这些对象从其原型继承了属性和方法。静态属性和方法 有时,您需要绑定到类而不是实例的属性或方法也就是,静态属性和方法。在 JavaScript 中很容易做到这一点,因为函数是可以按需要设置其属性和方法的对象。由于在 JavaScript 中构造函数表示类,因此可以通过在构造函数中设置静态方法和属性,直接将它们添加到类中。在 JavaSc

14、ript 中调用静态方法的语法与在 C# 中几乎完全相同。这不应当让人感到吃惊,因为构造函数的名称实际上是类的名称。这样,就有了类、公用属性/方法,以及静态属性/方法。还需要其他什么吗?当然,私有成员。但 JavaScript 本身并不支持私有成员(同样,也不支持受保护成员)。任何人都可以访问对象的所有属性和方法。但我们有办法让类中包含私有成员,但在此之前,您首先需要理解闭包。闭包 我没有自觉地学习过 JavaScript。我必须快点了解它,因为我发现如果没有它,在实际工作中编写 AJAX 应用程序的准备就会不充分。开始,我感到我的编程水平好像降了几个级别。(JavaScript!我的 C+ 朋友会怎么说?)但一旦我克服最初的障碍,我就发现 JavaScript 实际上是功能强大、表现力强而且非常简练的语言。它甚至具有其他更流行的语言才刚刚开始支持的功能。JavaScript 的更高级功能之一是它支持闭包,这是 C# 2.0 通过它的匿名方法支持的功能。闭包是当内部函数(或 C#

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号