WPTheme Java JavaScript…Yeah~!
Jun 19

  最近,我会见了一个有5年网络应用程序开发经验的程序员。她编写JavaScript已经有半年了,并认为她的JavaScript技巧很不错,但之后我很快地发现–她对JavaScript的了解可以说是一无所知。但我没有责备她这点。JavaScript在这种情况下显得很滑稽,它是一个让很多人(包括作者自己在之前也这样认为)都觉得自己已经很熟手了,因为他们都有着C/C++/C#或其它之前的编程经验了。

  在某种情况上,这个自我感觉并非无根据。使用JavaScript可以轻易的实现一些简单的应用。JavaScript入门的门栏很低;在使用这个编程语言进行编写之前不需要你了解太多的知识。甚至连一个非程序员也可以上手,并在他们的空闲时间为自己的主页写上很多有用的脚本。

  确实,在之前,我也常常只是利用MSDN® DHTML手册和我的C++/C#经验,以及对JavaScript的仅有认识上过日子的。直到当我在一个真正的AJAX应用程序上工作时,才发现我的JavaScript知识是多么匮乏。这个新一代的网络应用程序的复杂性和相关性要求我们使用一个完全不同的手段去编写JavaScript代码。这是一个严紧JavaScript应用程序!我们那种使用后就抛弃的传单式的脚本编写方式不再适用了。

  面向对象编程(OOP)是在很多JavaScript库中是一个非常流行的处理手段,它能使代码更易于管理和维护。JavaScript支持OOP,但它的实现方式与Microsoft® .NET Framework中的像C++、C#或Visual Basic®这样的编程语言的大有不同,所以熟悉这些编程语言的开发人员在开始时会觉得,OOP在JavaScript中显得很怪,而且与他们的直觉相反。这写的这篇文章主要是深入地讨论JavaScript怎样真正地支持面向对象编程和我们应当如何进行JavaScript面向对象开发。现在就让我们从对象(没其它了吧?)讲起吧。

  JavaScript 对象是字典

  在C++或C#中,当我们谈论对象时,总会提及到类和结构。对象所拥有的属性和方法,取决于把它实例化的模板(即类)。但那不是JavaScript对象的情形。在JavaScript,对象是一对对键名/键值的集合–可以想象成一个字典和字典的一串索引。我们可以通过熟悉的”.”(dot)操作符和”[]“操作符来获取和设置一个对象的属性,就像经典的查字典行为。请看下面一个代码小片段

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

也可以这样写,同样正确:

var userObject = {}; // 与new Object()等价
userObject["lastLoginTime"] = new Date();
alert(userObject["lastLoginTime"]);

我们同样可以在定义lastLoginTime的时候给它赋值:

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

  你看,现在它已经和C# 3.0的对象初始化器是多么相似。同样,如果你熟悉Python也会发觉,我们第二个和第三个代码片段中实例化lastLoginTime的方式正是在Python中指定字典的方式。唯一的区别是,JavaScript的对象/字典只接受字符串形式的键,而非Python的字典世界里的哈唏表对象(译者:指Python也可以接受字符串以外的对象作为键名,关于Python内容的翻译有待修正)。

  上面的例子同样显示出JavaScript对象比C++和C#对象更具有可扩展性。属性lastLoginTime不必预告声明–即时userObject并没有这个名字的属性,也会简单地添加到userObject上去。如果你还记得JavaScript对象是一个字典的话,这就不是什么令人吃惊的事–毕竟,我们总是添加新的索引键(包括键值)到字典中去。

  现在我们有了对象属性,那么对象的方法呢?再次说明,JavaScript与C++/C#是不同的。为了理解对象方法,下面让我们近距离观察JavaScript的函数。

To be Continued…

respondLeave a Reply