使用面向对象的技术创建高级JavaScript Web 应用程序

作者:Ray Djajadinata 来源:Msdn 时间:2008-11-03 13:00:00 

最近,我面试了一个有五年 Web 应用程序开发经验的软件开发人员。四年半来她一直在从事 JavaScript 相关的工作,她自认为 JavaScript 技能非常好,但在不久之后我就发现实际上她对 JavaScript 知之甚少。话虽这样说,但我确实没有责备她的意思。JavaScript 真的是很有趣。很多人(包括我自己,直到最近!)都认为自己很擅长 JavaScript 语言,因为他们都知道 C/C++/C#,或者有一些以前的编程经验。

在某种程度上,这种假设并不是完全没有根据的。用 JavaScript 很容易做些简单的事情。入门的门槛很低,该语言很宽松,它不需要您知道很多细节就可以开始用它进行编码。甚至非编程人员也可能用它在几个小时内为主页编写一些有用的脚本。

的确,直到最近,仅仅凭借 MSDN® DHTML 参考资料和我的 C++/C# 经验,我也总能勉强利用这点 JavaScript 知识完成一些任务。只是当我开始编写真实的 AJAX 应用程序时,我才意识到实际上我的 JavaScript 知识还非常不够。这个新一代的 Web 应用程序的复杂性和交互性需要程序员以完全不同的方法来编写 JavaScript 代码。它们是真正的 JavaScript 应用程序!我们在编写一次性脚本时一直采用的方法已完全不再有效。

面向对象编程 (OOP) 是一种流行的编程方法,很多 JavaScript 库中都使用这种方法,以便更好地管理和维护基本代码。JavaScript 支持 OOP,但与诸如 C++、C# 或 Visual Basic® 等流行的 Microsoft® .NET Framework 兼容语言相比,它支持 OOP 的方式非常不同,因此主要使用这些语言的开发人员开始可能会觉得在 JavaScript 中使用 OOP 很奇怪而且不直观。我写本文就是为了深入讨论 JavaScript 语言实际上如何支持面向对象编程,以及您如何使用这一支持在 JavaScript 中高效地进行面向对象开发。下面首先讨论对象(还能先讨论其他别的什么呢?)。

JavaScript 对象是词典

在 C++ 或 C# 中,在谈论对象时,是指类或结构的实例。对象有不同的属性和方法,具体取决于将它们实例化的模板(即类)。而 JavaScript 对象却不是这样。在 JavaScript 中,对象只是一组名称/值对,就是说,将 JavaScript 对象视为包含字符串关键字的词典。我们可以使用熟悉的“.”(点)运算符或“[]”运算符,来获得和设置对象的属性,这是在处理词典时通常采用的方法。以下代码段

程序代码 

var userObject = new Object();
userObject.lastLoginTime = new Date();
alert(userObject.lastLoginTime); 

的功能与下面的代码段完全相同:

程序代码

var userObject = {}; // equivalent to new Object()
userObject[“lastLoginTime”] = new Date();
alert(userObject[“lastLoginTime”]);

我们还可以直接在 userObject 的定义中定义 lastLoginTime 属性,如下所示:

程序代码

var userObject = { “lastLoginTime”: new Date() };
alert(userObject.lastLoginTime);

注意,它与 C# 3.0 对象初始值非常相似。而且,熟悉 Python 的人会发现在第二和第三个代码段中实例化 userObject 的方法与在 Python 中指定词典的方法完全相同。唯一的差异是 JavaScript 对象/词典只接受字符串关键字,而不是像 Python 词典那样接受可哈希化的对象。

这些示例还显示 JavaScript 对象比 C++ 或 C# 对象具有更大的可延展性。您不必预先声明属性 lastLoginTime — 如果 userObject 没有该名称的属性,该属性将被直接添加到 userObject。如果记住 JavaScript 对象是词典,您就不会对此感到吃惊了,毕竟,我们一直在向词典添加新关键字(和其各自的值)。

这样,我们就有了对象属性。对象方法呢?同样,JavaScript 与 C++/C# 不同。若要理解对象方法,首先需要仔细了解一下 JavaScript 函数。

标签:面向对象,web程序,javascript,开发
0
投稿

猜你喜欢

  • sqlserver 索引的一些总结

    2012-08-21 11:03:31
  • 使用xmlhttp为网站增加股市行情查询功能

    2007-10-10 21:09:00
  • 如何为Access数据库表添加日期或时间戳

    2008-11-21 12:46:00
  • 教你用FrontPage2003轻松布局网页

    2008-02-24 17:05:00
  • 网站改版常见问题答疑

    2008-08-22 18:31:00
  • 讲解SQL Server海量数据导入的最快方法

    2008-12-05 16:21:00
  • ASP中的全角和半角之间的转化

    2008-06-06 13:34:00
  • Asp 编码互转的研究和实现代码

    2011-03-30 10:44:00
  • Js的MessageBox

    2008-05-16 10:25:00
  • 白鸦:贪守米缸者,饿死灶台

    2009-02-23 13:03:00
  • MYSQL server has gone away解决办法

    2010-11-25 17:22:00
  • 2个asp获取安全字符串的方法

    2007-10-19 15:08:00
  • asp中通过addnew添加内容后取得当前文章的自递增ID的方法

    2011-02-05 11:05:00
  • xhtml+css页面制作过程中问题的解决方案

    2008-08-05 18:00:00
  • 一种特别简单的MySQL数据库安装方法

    2008-12-17 15:30:00
  • ASP分页类(支持多风格变换)

    2011-04-08 10:39:00
  • CSS Sprites

    2007-10-10 13:21:00
  • HTML和CSS中的视觉语义

    2010-07-09 13:08:00
  • JavaScript中实现字符串的取左取右(实现left和right功能)

    2009-07-20 12:39:00
  • 用JavaScript判断字符串长度

    2009-10-29 12:15:00
  • asp之家 网络编程 m.aspxhome.com