Ajax基础教程(5)- 5.7 实现高级JavaScript技术

我们假设本书的读者对JavaScript至少有基本的实践知识。如果要提供JavaScript的全面教程,这本身就需要一本完整的书才能讲清楚,所以在这里我们不打算详细介绍这种语言。相反,本节只是讨论JavaScript的一些可能鲜为人知的高级特性,并说明如何在你的Ajax开发中结合使用这些特性。

我们先来简单地谈谈JavaScript的历史,以便你了解它原来是什么样子,又是怎么发展到今天的。Netscape的Brendan Eich于1995年开发了JavaScript。他的任务本来是开发一种方法,使得创建和维护Web网站的非专业Web设计人员能够更容易地使用Java applet。Eich认为,适当的选择是开发一种不需要编译器的弱类型语言。

最初,Eich开发的这个语言有过很多名字,不过,后来由于Java在市场上大获成功,因此借着这股东风,最后命名为JavaScript。JavaScript很快成为Web上最流行的脚本语言,这要归功于它的低门槛,另外还因为它能够把JavaScript脚本从一个页面复制到另一个页面。在JavaScript和Navigator DOM的早期修订版本基础上,产生了DOM Level 0标准,该标准将表单元素和图像定义为DOM元素的子元素。

Microsoft迎头赶上,创建了自己的脚本语言VBScript。VBScript在功能上与JavaScript类似,但采用了类Visual Basic语法,而且只能用于IE。Microsoft还提供了JavaScript的一个实现JScript(现在已由ECMA标准化并称为ECMAScript)。尽管不同JavaScript的语法几乎是一样的,但不同浏览器上DOM实现却大相径庭,以至于几乎不可能创建跨浏览器的脚本。使用“最小公分母”方法得到的脚本通常只能完成最简单的任务。

到了1998年,Netscape开放了其浏览器的源代码,决定开始重写浏览器,并把重点放在遵循W3C标准上。那时,IE 5是W3C DOM和ECMAScript的最佳实现。开源版本的Netscape以Mozilla为名于2002年问世。由此开始,浏览器领域形成了一个趋势:越来越多的浏览器开始努力遵循W3C和ECMA维护的Web标准。如今,现代浏览器(如Firefox、Mozilla、Opera、Konqueror和Safari)都严格遵循Web标准,这就大大简化了编写跨浏览器的HTML和JavaScript等的任务。IE 6与1998年的IE 5并没有太大差别,它严格禁止了最不合标准的行为。

5.7.1 通过prototype属性建立面向对象的JavaScript

JavaScript通过一种链接机制来支持继承,而不是通过完全面向对象语言(如Java)所支持的基于类的继承模型。每个JavaScript对象都有一个内置的属性,名为prototype。prototype属性保存着对另一个JavaScript对象的引用,这个对象作为当前对象的父对象。

当通过点记法引用对象的一个函数或属性时,倘若对象上没有这个函数或属性,此时就会使用对象的prototype属性。当出现这种情况时,将检查对象prototype属性所引用的对象,查看是否有所请求的属性或函数。如果prototype属性引用的对象也没有所需的函数或属性,则会进一步检查这个对象(prototype属性引用的对象)的prototype属性,依次沿着链向上查找,直到找到所请求的函数或属性,或者到达链尾,如果已经到达链尾还没有找到,则返回undefined。从这个意义上讲,这种继承结构更应是一种“has a”关系,而不是“is a”关系。

如果你习惯于基于类的继承机制,那么可能要花一些时间来熟悉这种prototype机制。prototype机制是动态的,可以根据需要在运行时配置,而无需重新编译。你可以只在需要时才向对象增加属性和函数,而且能动态地把单独的函数合并在一起,来创建动态、全能的对象。对prototype机制的这种高度动态性可谓褒贬不一,因为这种机制学习和应用起来很不容易,但是一旦正确地加以应用,这种机制则相当强大而且非常健壮。

这种动态性与基于类的继承机制中的多态概念异曲同工。两个对象可以有相同的属性和函数,但是函数方法(实现)可以完全不同,而且属性可以支持完全不同的数据类型。这种多态性使得JavaScript对象能够由其他脚本和函数以统一的方式处理。

图5-15显示了实际的prototype继承机制。这个脚本定义了3类对象:Vehicle、Sports-

Car和CementTruck。Vehicle是基类,另外两个类由此继承。Vehicle定义了两个属性:wheelCount和curbWeightInPounds,分别表示Vehicle的车轮数和总重量。JavaScript不支持抽象类的概念(抽象类不能实例化,只能由其他类扩展),因此,对于Vehicle基类,wheelCount默认为4,curbWeightInPounds默认为3 000。


图5-15 Vehicle、SportsCar和CementTruck对象之间的关系

时间: 2024-11-01 13:46:49

Ajax基础教程(5)- 5.7 实现高级JavaScript技术的相关文章

Ajax基础教程(6)- 6.1 JavaScript提出的问题

读到这里,应该很清楚了,要想真正很好地使用Ajax,你就要写一些JavaScript代码.尽管框架和工具包能减轻一些负担,但是最终你可能会得到比平常更多的JavaScript代码.因为我们自己写过不少,所以很清楚写JavaScript代码绝不是轻而易举的,不过,本章我们还是要在你筋疲力尽的肩头再压上几块石头. 具体地,我们将介绍测试驱动开发(test-driven development,TDD),并展示开发JavaScript代码时如何应用TDD.尽管这种方法不能马上解决你的所有编程问题,但至

什么叫Ajax?(Ajax基础教程)

ajax|基础教程 由于在研究web即时通技术(TRACQ,网眼,网站商务通),所以对Ajax感兴趣起来,最近好像Ajax很火,从搜索引擎的结果可见一斑.baidu找到181,000篇相关文档,google找到了6,790,000篇.我觉得,在没有提出Ajax这个概念以前,肯定有人已经在利用这些技术做事情了,只是在最近才被炒的热闹起来.我先把网上找的资料整理在这里. 1.定义 Ajax最早是由Jesse James Garrett提出来的,原文:Ajax: A New Approach to W

Ajax与《Ajax基础教程》

ajax|基础教程 <Ajax基础教程>是国际上第一部有关Ajax的图书.其中文版也是国内首部Ajax图书,即将由人民邮电出版社推出. <Ajax基础教程>图灵程序设计丛书 (美)Ryan Asleson Nathaniel T.Schutta著金灵等译 人民邮电出版社2006年1月 定价:35元 Ajax,Ajax,Ajax!请不要弄错了,我说的不是希腊史诗中的英雄,也不是那支享誉全球的梦幻荷兰足球俱乐部,更不是加拿大的某个地名.去问问身边的技术追新族,他会一脸不屑地告诉你:连A

Ajax基础教程(5)- 构建完备的Ajax开发工具箱 5.7 小结

本章我们介绍了一些工具和技术,采用这些工具和技术,会让你的开发过程更加愉快.JSDoc可以帮助建立JavaScript代码的文档,从而使其他开发人员能够更容易地理解和使用代码.如果你开始经常使用Ajax技术,肯定会编写一些你自己可重用的JavaScript库,而且会用JSDoc为代码建立文档,以便其他人更轻松地使用这些库. HTML Validator和Checky等工具可以帮助你确保所写的HTML代码是合法的HTML.不合法的HTML会导致未预见的行为,所以使用合法的HTML或XHTML能消除

Ajax基础教程(1)-Ajax简介 1.1 Web应用简史

混沌初开,一切都那么简单.为了连接美国的少数几个顶尖研究机构,人们设计了最早的"Internet",以便共同开展科学研究.不论是图书馆员.核物理学家,还是计算机科学家,都必须学习一个相当复杂的系统.1962年,麻省理工学院(MIT)的J.C.R. Licklider最早提出他的"Galactic Network"(超大网络)思想时,Firefox和IE之类的便捷工具连概念都未产生. Licklider后来继续在美国国防高级研究计划局(DARPA)从事计算机研究,在那

AJAX基础教程及初步使用

ajax|基础教程 Ajax基础教程 什么是 AJAX? AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScript的两项强大性能.这两项性能在多年来一直被网络开发者所忽略,直到最近Gmail, Google suggest和google Maps的横空出世才使人们开始意识到其重要性. 这两项被忽视的性能是: 无需重新装载整个页面便能向服务器发送请求. 对XML文档的解析和处理. 步骤 1 – "请!" --- 如何发送一个HTTP请求 为了用

技术新知:AJAX基础教程

ajax|基础教程     什么是 AJAX? AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScript的两项强大性能.这两项性能在多年来一直被网络开发者所忽略,直到最近Gmail, Google suggest和google Maps的横空出世才使人们开始意识到其重要性. 这两项被忽视的性能是:     * 无需重新装载整个页面便能向服务器发送请求.    * 对XML文档的解析和处理. 步骤 1 – "请!" --- 如何发送一个HTTP

Ajax基础教程

ajax|基础教程 AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScript的两项强大性能.这两项性能在多年来一直被网络开发者所忽略,直到最近Gmail, Google suggest和google Maps的横空出世才使人们开始意识到其重要性.  这两项被忽视的性能是:  • 无需重新装载整个页面便能向服务器发送请求.  • 对XML文档的解析和处理. 步骤 1 – "请!" --- 如何发送一个HTTP请求 为了用JavaScript向服

Ajax基础教程(5)- 5.6 使用Firefox的Web开发扩展

Firefox的Web开发扩展为Firefox浏览器增加了大量有用的Web开发工具.一旦安装了这个扩展,你就可以通过一个工具条来访问为浏览器增加的这些工具(见图5-14).在目前能够运行Firefox的所有平台上都能使用这个扩展包,这就意味着在Windows.OS X和Linux都能顺利地使用这个扩展包.Firefox的Web开发扩展包可以从chrispederick.com/ work/firefox/webdeveloper/获得. 图5-14 Web开发扩展为Firefox增加的工具条 W

Ajax基础教程(5)- 5.5 完成JavaScript压缩和模糊处理

我们都知道,JavaScript是一种在客户浏览器中执行的解释型语言.换句话说,JavaScript会以明文下载到浏览器,再由浏览器根据需要执行这个JavaScript代码. 用户只要使用浏览器的查看源代码功能就能读到JavaScript源代码,该功能会显示出页面的完整HTML标记,包括所有JavaScript块.即使JavaScript源代码放在一个外部文件中,并用script标记的src属性来引用,用户也可以下载并阅读它.由于查看页面的人都能得到JavaScript源代码,所以不要把专用或机