JavaScript面向对象编程

  • 格式:pdf
  • 大小:1.55 MB
  • 文档页数:150

1 第一部分:现代JavaScript简介 第一章 现代JavaScript编程 JavaScript的演化是渐进而稳固的。历经过去十年的进程,JavaScript在人们的认知里已经从一门简单的玩物式的语言逐渐发展成为一门倍受推崇的编程语言,被全世界的公司和开发者用来构造种种精彩的应用。现代JavaScript编程语言一如既往地可靠、健壮,强大得令人难以置信。在本书中我进行的许多论述,将揭示是什么使得现代JavaScript应用程序与从前有着那么明显的不同。本章中出现的许多概念远不能算新奇,然而成千上万聪明的程序员的认同促使它们的用途得以升华并最终形成今天的格局。既如此,我们这就来着眼现代JavaScript程序设计。 面向对象的JavaScript 从语言的视角来看,面向对象的程序设计和面向对象的JavaScript语言绝对不是什么摩登的东西;JavaScript最开始就是被设计成一种彻底的面向对象语言。然而,随着JavaScript在其使用和接受的过程中的“逐步发展”,其它语言(如Ruby,Python,和Perl等)的程序员留意到了它并开始将他们的编程模式引入了JavaScript。 面向对象的JavaScript代码的外观和内部运作都有别于其它具有对象能力的语言。在第二章我将深入论述使它如此独特的方方面面,而在这里,先来看一点基础的东西以体会编写现代JavaScript代码的初步感觉。程序1-1中的两个对象构造器的例子,演示了可用于学校课程的简单的对象搭配。 程序1-1. 课程和课程表的面向对象JavaScript表述 CODE: //类Lecture的构造器 //使用两个字符串参数,name和teacher function Lecture( name, teacher ) { //把它们作为对象的本地属性保存 this.name = name; this.teacher = teacher; } //类Lecture的方法,生成一个显示该课程信息的字符串 Lecture.prototype.display = function(){ return this.teacher + " is teaching " + this.name; }; //类Schedule的构造器 //使用一个lectures类型的数组作为参数

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

2 function Schedule( lectures ) { this.lectures = lectures; } //类Schedule的方法,用来构造一个描述该课程表的字符串 Schedule.prototype.display = function(){ var str = ""; //遍历每门课程,累加构成信息字符串 for ( var i = 0; i < this.lectures.length; i++ ) str += this.lectures[i].display() + " "; return str; }; 从程序1-1的代码中你或许已经看出,大部分的面向对象基本原则贯穿存在于其中,但它们是以不同于其它更常见的面向对象语言的方式组织起来的。你可以创建对象构造器和方法,并存取对象属性。程序1-2展示了在应用程序中使用上面两个类的一个示例。 程序1-2. 给用户提供课程的列表 CODE: //创建一个新的课表对象,存于变量mySchedule中 var mySchedule = new Schedule([ //创建一个课程对象的数组, //作为传给课表(原文此处为Lecture,疑为笔误)对象的唯一参数 new Lecture( "Gym", "Mr. Smith" ), new Lecture( "Math", "Mrs. Jones" ), new Lecture( "English", "TBD" ) ]); // 弹出对话框显示课表的信息 alert( mySchedule.display() ); 伴随对广大程序员对JavaScript的接受,设计良好的面向对象代码的使用也正日益普及。贯穿本书的始末,我将试图展示我认为能够最好地例示代码设计与实现的不同的面向对象的JavaScript代码片段。 测试你的代码 建立起良好的面向对象的基本代码之后,开发专业品质的JavaScript代码的第二个方面是确保拥有一个强劲的代码测试环境。当开发频繁使用的或将由其它开发者维护的代码时,严格调试的必要性会显得尤为突出。为其它开发者提供一个坚实的测试基础,是维持代码开发活动的关键。 在第四章,你将会看到一些可用来形成良好的测试/使用框架的不同工具,以及对复杂应用程序的简单调试。用于Firefox的插件Firebug就是其中一例。Firebug提供了许多的有

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

3 用的工具,如错误控制台,HTTP请求日志,调试,以及元素查看。图1-1展示了Firebug调试一段代码时的实况截屏。

图1-1. Firefox Firebug插件运行时的截屏 开发干净的、可测试的代码的重要性怎么强调都不会过分。一旦你开始开发一些干净的面向对象代码并将它们与合适的测试套件结合,相信你会倾向于同意这一点。 为分发而进行的封装 开发现代的专业JavaScript代码的最后一个方面是为了代码分发或在现实世界里中使用而进行的封装处理。随着开始开发者们在其页面中使用越来越多的JavaScript代码,冲突的可能性将会增加。如果两个JavaScript库里都有一个名为data的变量或者按各的意图添加事件,灾难性的冲突和莫名其妙的错误可能就会出现。 开发者简单地置入 Introduction to the DOM There are a number of reasons why the DOM is awesome, here are some: It can be found everywhere. It's easy to use. It can help you to find what you want,

There are a number of reasons why the DOM is awesome, here are some:

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

6 really quickly. DOM是开发Unobtrusive JavaScript代码的第一步。借助简单快速导航HTML文档的能力,所有随之而来的JavaScript/HTML交互将变得如此简单。 事件 事件将一个应用程序之内所有的用户交互结合在一起。在一个设计良好的JavaScript应用程序里,你将拥有数据源和它的视觉的表示(在HTML DOM内部)。为了同步这两个方面,你必须监视用户的交互动作并试图相应地更新用户界面。使用DOM和JavaScript事件的结合是使得现代web应用程序赖以工作的基本组合。 所有的现代浏览器都提供一系列的只要特定交互动作发生即被触发的事件,如用户移动鼠标,敲击键盘,或离开页面等等。使用这些事件,你可以注册代码到特定事件,一旦该事件发生,你的代码就会被执行。程序1-5展示了这种交互的一个实例,该网页中的